LeetCode - Set Mismatch(645)

marafo·2021년 6월 10일

Hash Table - Easy

class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        dic = {}
        length = len(nums)
        zero = 0
        twice = 0
        
        for i in range(length):
            dic[i + 1] = 0
        
        for i in range(length):
            dic[nums[i]] += 1
                                    
        # 2번 나온 num이랑 0번 나온 num 찾기
        dic = list(dic.items())
    
        for i in range(len(dic)):
            if dic[i][1] == 2:
                twice = dic[i][0]
                
            if dic[i][1] == 0:
                zero = dic[i][0]
        
        return [twice, zero]
        

set을 이용한 풀이. 하지만 이상하게 더 느리다

from collections import Counter

class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        # 1 ~ n 까지 정렬되어있다는 조건 없음. 뒤죽박죽 가능성
        arr = []
        # dic으로 2번 나온 num을 찾는다.
        dic = collections.Counter(nums).most_common()
        s = set()
        
        for i in range(len(nums)):
            arr.append(i + 1) # 원래 있어야할 1 ~ n 까지 숫자
            s.add(nums[i]) # nums에 출연한 숫자를 set에 넣기
            
        s = list(s)
        
        zero = list(set(arr) - set(s))[0]
        twice = dic[0][0]
        
        return [twice, zero]
        
        
profile
프론트 개발자 준비

0개의 댓글