Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
Example 1:
Input: [3,0,1] Output: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1] Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
class Solution:
def missingNumber(self, nums: List[int]) -> int:
res = len(nums)
for i, v in enumerate(nums):
res ^= (i ^ v)
return res
- XOR
class Solution {
public int missingNumber(int[] nums) {
int res = nums.length;
for (int i = 0, n = res; i < n; ++i) {
res ^= (i ^ nums[i]);
}
return res;
}
}
- Math
class Solution {
public int missingNumber(int[] nums) {
int res = nums.length;
for (int i = 0, n = res; i < n; ++i) {
res += (i - nums[i]);
}
return res;
}
}