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.
解法一:(用等差数列的做法)
public class Solution {
public int missingNumber(int[] nums) {
int sum=nums.length*(nums.length+1)/2;
for(int i=0;i<nums.length;i++){
sum-=nums[i];
}
return sum;
}
}
解法二,位运算
public class Solution {
public int missingNumber(int[] nums) {
int sum=0;
for(int i=1;i<=nums.length;i++){
sum^=i;
}
for(int i=0;i<nums.length;i++){
sum^=nums[i];
}
return sum;
}
}
解法三,位运算的更简洁写法
public class Solution {
public int missingNumber(int[] nums) {
int sum=0;
for(int i=1;i<=nums.length;i++){
sum^=i;
sum^=nums[i-1];
}
return sum;
}
}