LeetCode 268: Missing Number

이원희·2021년 3월 27일
0

📝 PS

목록 보기
65/65
post-thumbnail

그동안 바빠서 오랜만에 포스팅을 쓴다.

문제풀이

주어진 array에서 빠진 숫자를 찾는 문제였다.
내가 풀었던 방법은 array를 정렬하고 for문으로 돌면서 빠진 숫자를 찾는 방법이다.
결국은 for문을 두번 도는데... 좀 더 짧게 할 수 있을거 같았다.

func missingNumber(_ nums: [Int]) -> Int {
        let sortedNums = nums.sorted()
        for index in 0..<sortedNums.count {
            if index != sortedNums[index] {
                return index
            }
        }
        return sortedNums.count
    }

그래서 아래와 같은 방법을 생각했다.
expected는 1부터 array의 길이까지의 합이다.
(1부터 10까지의 합을 구할때 (10 * 11)/2식을 세우는것과 같음)
actual은 reduce로 주어진 array 요소의 합이다.

expected에서 actual의 차이가 빠진 숫자이다.

func missingNumber2(_ nums: [Int]) -> Int {
        let expected = nums.count * (nums.count + 1) / 2
        let actual = nums.reduce(0, +)
        
        return expected - actual
    }

LeetCode

0개의 댓글