0268. Missing Number

268. Missing Number #

题目 #

给定一个包含 [0, n]n 个数的数组 nums,找出 [0, n] 这个范围内没有出现在数组中的那个数。

思路 #

  • 数学: expectSum - actualSum
  • 异或: x ^ x = 0expect ^ actual
  • 原地哈希: :question:

代码 #

数学 #

class Solution {
    public int missingNumber(int[] nums) {
        int n = nums.length;
        int expected = n * (n + 1) / 2;
        int actual = 0;
        for (int num: nums) actual += num;
        return exptected - actual;
    }
}

异或 #

class Solution {
    public int missingNumber(int[] nums) {
        int whole = 0;
        for (int i = 0; i < nums.length + 1; i++) whole = whole ^ i;
        for (int num: nums) whole = whole ^ num;
        return whole;
    }
}

致谢 #

宫水三叶