题目来源:
https://leetcode-cn.com/problems/missing-number/
题目描述:
解法一:
相比于从【0...n】的数组,该数组缺少了一个数,那么计算出【0...n】的数组的和,再减去待计算数组的和,那么缺少的数就出来了。
class Solution {
public int missingNumber(int[] nums) {
int expectedSum = nums.length*(nums.length + 1)/2;
int actualSum = 0;
for (int num : nums) actualSum += num;
return expectedSum - actualSum;
}
}
解法二:
假设0~n数字没有缺失的话,对0~n进行异或,可以得到一个确定的数字,然后对缺失数字的数组进行异或,可以得到另一个数字,这两个数字的异或,就是缺失的数字。
public class Solution {
public int missingNumber(int[] nums) {
int missing = nums.length;
for(int i=0; i<nums.length; i++) {
missing ^= nums[i] ^ i;
}
return missing;
}
}