https://leetcode.com/problems/missing-number/#/description
找到从0开始的等差数列中缺失的一项。
思路:求和,然后用理论上应该得到的数列和减去实际上得到的数组和,就是缺失的数字。
public class Solution {
public int missingNumber(int[] nums) {
int sum = 0;
for(int i = 0;i < nums.length;i ++){
sum += nums[i];
}
return (nums.length*(nums.length+1))/2-sum;
}
}
另一个思路:用xor,因为a xor a = 0,如果将数组的值和数组的下标进行xor,那么最终缺失的那一项是可以被xor出来的。
比特运算真的很聪明啊!!!
public class Solution {
public int missingNumber(int[] nums) {
int xor = 0;
int i = 0;
for (i = 0; i < nums.length; i++) {
xor = xor ^ i ^ nums[i];
}
return xor ^ i;
}
}