[leetcode] 448. Find All Numbers Disappeard in an Array

delma·2020년 3월 12일
2
post-thumbnail

문제

중복된 수가 들어있는 배열이 주어졌을 때, 거기에 없는 숫자 구하기..
처음에는 1부터 배열의 가장 큰 숫자까지가 범위인 줄 알았는데, 테스트케이스 보니까 배열의 사이즈까지이다!

해결 방법

  1. 빈 배열일 경우 [] 리턴
  2. 1부터 배열의 사이즈 수 까지 차례대로 들어있는 배열을 하나 만든다.
  3. 기존 입력된 배열에 중복을 제거하기 위해 그대로 set 에 넣는다.
  4. set에 없는 수가 있다면 정답 배열에 담아 리턴

코드

class Solution {
    func findDisappearedNumbers(_ nums: [Int]) -> [Int] {
        var answer: [Int] = []
        var serialArray: [Int] = []
        var noOverlapArray: Set<Int> = []
        
        if nums.count <= 0 { return [] }
                    
        for number in 1...nums.count {
            serialArray.append(number)
        }
        
        for number in nums {
            noOverlapArray.insert(number)
        }

        for num in serialArray {
            if !noOverlapArray.contains(num) {
                answer.append(num)
            }
        }
        
        return answer
    }
}
profile
🌐Code makes world better

1개의 댓글

comment-user-thumbnail
2020년 3월 12일

👍

답글 달기