Zero to Hero
article thumbnail
 

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을 곱하기)를 한다.

해당 인덱스의 위치가 양수라면 체크가 되지 않은 위치고, 체크가 되지 않았다는 것은 그 수가 등장하지 않았다는 것을 의미한다.

'Algorithm' 카테고리의 다른 글

543. Diameter of Binary Tree  (0) 2021.04.28
121. Best Time to Buy and Sell Stock  (0) 2021.04.27
21. Merge Two Sorted Lists  (0) 2021.04.26
169. Majority Element  (0) 2021.04.23
136. Single Number  (0) 2021.04.22
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!