Leetcode Note: Go - Missing Number

Missing Number - LeetCode
https://leetcode.com/problems/missing-number/

  • Go 言語で取り組んだメモ

所感

  • int 配列の nums が与えられるので、その配列中で飛ばされている数値を return する
  • 例えば
    • [3, 0, 1] という配列であれば 2 がスキップされているので 2 を return する
    • [0, 1] という配列であればスキップされている数値はないので順当に 2 を return する

回答

func missingNumber(nums []int) int {
    sort.Ints(nums)
    for i := 0; i < len(nums); i++ {
        if nums[i] != i {
            return i
        }
    }
    return len(nums)
}
  • nums 配列は 0 から増えていく数値になるので for ループを i で判定できる
  • nums に sort してからループして nums[i] != i を判定すれば、スキップされた数値を検出できる
  • ループが問題なく終了したらスキップされた数値は無いということなので len(nums) で nums + 1 の数値を return すればよい
    • nums 配列は 0 からスタートで len は普通に 1 からカウントをスタートするので len(nums) + 1 とする必要は無い