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;
}
}