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 ํ์
์ด ๋ฉ๋๋ค.