LeetCode 268 缺失数字

LeetCode 268 缺失数字

问题描述:
异或运算

  • 异或运算具有交换律
  • [0,...,n]的数组中有: (00)(11)...(n-1n-1)^n = n,其中括号内前者是下标、后者是数值
  • 因此若其中某个值缺失,即: ...m(m+1^m+1),则通过异或运算可以找到m

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:40.3 MB, 在所有 Java 提交中击败了59.86%的用户

class Solution {
    public int missingNumber(int[] nums) {
        int missing = nums.length;
        for (int i = 0; i < nums.length; i++) {
            missing ^= i ^ nums[i];
        }
        return missing;
    }
}
原文地址:https://www.cnblogs.com/CodeSPA/p/13584781.html