题目链接:https://leetcode.com/problems/missing-number/
题目:
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?
思路:
1、数组是0~n,所以可以利用数组和
2、用异或操作,让nums数组和0~n异或,重复的元素异或结果为0,最后结果就是miss number
算法1:
public int missingNumber(int[] nums) {
int sum = 0;
for (int i : nums) {
sum += i;
}
int result = nums.length * (nums.length + 1) / 2;
if (result == sum) {
return 0;
} else {
return result - sum;
}
}
算法2:
public int missingNumber(int[] nums) {
int result = 0;
for(int i=0;i<nums.length;i++){
result ^= nums[i]^i;
}
result ^=nums.length;
return result;
}