Algorithm
448. Find All Numbers Disappeared in an Array
Doljae
2021. 4. 26. 14:12
Find All Numbers Disappeared in an Array - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
1. 집합 연산을 이용한 풀이
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
return list(set([i for i in range(1, len(nums) + 1)]) - set(nums))
하지만 집합 연산을 위한 추가 공간을 사용하고 있다.
2. 시간, 공간 복잡도를 O(N), O(1)로 해결하는 풀이
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
for index, num in enumerate(nums):
t = abs(num) - 1
nums[t] = -abs(nums[t])
return [i + 1 for i in range(len(nums)) if nums[i] > 0]
배열에 등장하는 숫자는 1 ~ 배열의 길이까지이고, 특정 숫자가 등장했다는 것을 그 숫자-1 인덱스 위치에 체크(-1을 곱하기)를 한다.
해당 인덱스의 위치가 양수라면 체크가 되지 않은 위치고, 체크가 되지 않았다는 것은 그 수가 등장하지 않았다는 것을 의미한다.