Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
For example,
Given nums = [0, 1, 3]
return 2
.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
比较简单的一道题
下面给出了两种方法:
public int missingNumber(int[] nums) {
int[] count=new int[nums.length+1];
for(int i=0;i<nums.length+1;i++){
count[i]=0;
}
for(int i=0;i<nums.length;i++){
count[nums[i]]++;
}
for(int i=0;i<nums.length+1;i++){
if(count[i]==0){
return i;
}
}
return -1;
}
第二种是位运算,使用了位异或的特点,即0^x=x x^x=0
public int missingNumber(int[] nums) {
int res=0;
for(int i=0;i<nums.length;i++){
res^=nums[i]^i;
}
res^=nums.length;
return res;
}