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]