반응형
문제
leetcode.com/problems/missing-number/
잠깐만
손으로 계산하면서 패턴을 찾아보세요
코드
class Solution {
func missingNumber(_ nums: [Int]) -> Int {
var totalSum = 0
var numSum = 0
for i in 0..<nums.count {
numSum += nums[i]
totalSum += (i+1)
}
return totalSum - numSum
}
}
class Solution {
func missingNumber(_ nums: [Int]) -> Int {
var missingNum = 0
var addNum = 1
nums.forEach {
missingNum += (addNum - $0)
addNum += 1
}
return missingNum
}
}
//코드 최적화 전, 로직을 그대로 구현한 코드
//func missingNumber(_ nums: [Int]) -> Int {
// var sum = 0
// var addNum = 1
// var numsSum = 0
//
// nums.forEach {
// numsSum += $0
//
// sum += addNum
// addNum += 1
// }
// return sum - numsSum
//}
설명
num이 k 일때, totalSum은 0부터 k까지의 합이며
numSum 범위는 나올 수 있는 sum의 범위 입니다.
따라서 Missing Number = totalSum - numSum가 되죠.
회고
numSum의 범위로 계산해보려 했더니, 의외로 쉽게 바로 풀려버렸습니다.
반응형
'코딩 테스트 > LeetCode(swift)' 카테고리의 다른 글
[LeetCode] 70. Climbing Stairs (0) | 2021.04.14 |
---|---|
[LeetCode] 190. Reverse Bits (0) | 2021.04.07 |
[LeetCode] 338. Counting Bits (0) | 2021.04.06 |
[LeetCode] 191. Number of 1 Bits (0) | 2021.04.06 |
[LeetCode] 371. Sum of Two Integers (0) | 2021.04.06 |