Missing Number - LeetCode
Solution
class Solution {
func missingNumber(_ nums: [Int]) -> Int {
// 1.
let max: Int? = nums.max()
let min: Int? = nums.min()
if min! != 0 {
return 0
}
// 2.
var array2: Array<Int> = []
for i in min! ... max! {
array2.append(i)
}
// 3.
var nums2 = nums
nums2.sort()
array2.sort()
for i in array2 {
if i != nums2[i] {
return i
}
}
return max! + 1
// // ๐ฅ.
// for i in min! ... max! {
// if nums.contains(i) == false {
// return i
// }
// }
// return max! + 1
}
}
// TACTIC
// 1. Find the maximum and minimum numbers in the 'nums' array.
// - Use array.max() and array.min() methods.
// - If 'min' is not equal to 0, return 0.
// 2. make array2
// - array2์ for๋ฌธ๊ณผ append๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ๋ค์ ์ถ๊ฐํ๋ค.
// 3. Compare 'nums' and 'array2', and return the missing number.
// - nums์ array2๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
// - for๋ฌธ์ ์ฌ์ฉํ์ฌ ์์๋๋ก ๋น๊ตํ๊ณ ์๋ก ๋ค๋ฅด๋ฉด, ๊ทธ ์๋ฅผ ์ถ๋ ฅ
// ๐ฅ. array๋ฅผ ๋ง๋ค์ง ๋ง๊ณ ๋ฐ๋ก ๋น๊ตํด๋ณด์ -> runtime์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค.
// POINT
// 1. Optinal Type:
// Swift์ max() ํจ์๋ Optional ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด๋ ์
๋ ฅ๋ ๋ฐฐ์ด์ด ๋น์ด์์ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
// ๋ง์ฝ ๋ฐฐ์ด์ด ๋น์ด์๋ค๋ฉด max() ํจ์๋ nil์ ๋ฐํํฉ๋๋ค.
// ๋ฐ๋ผ์ max()๋ฅผ ์ฌ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ ์์๋ ์๋์ผ๋ก Optional ํ์
์ด ๋ฉ๋๋ค.