力扣:消失的数字
数组nums
包含从0
到n
的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
**注意:**本题相对书上原题稍作改动
输入:[3,0,1]
输出:2
题目要求用O(n)的时间复杂度解决 如果排序 时间复杂度对低为O(nlogn)
这道题可以用或运算来解决 ^
我们知道 1^1=0那么 从1-n(数的最大值)中都 ^ 起来就可以得出 消失的数组
public int missingNumber(int[] nums) {
int sum = 0;
for(int i =0;i<nums.length;i++){
sum ^= nums[i];
sum ^= i+1;
}
return sum;
}