Description:
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?
题意:给定一个数组num,包含元素范围为[0, num.length];要求找出num中在范围[0, num.length]没有出现的那个元素;
解法:既然我们已经知道了包含的所有元素为范围[0, num.length],而数组num中仅仅只有一个元素没有出现,那么我们只要对范围[0, num.length]求和后减去数组num中的所有元素后得到的就是没有出现的那个元素;
class Solution {
public int missingNumber(int[] nums) {
int sum = 0;
int max = nums.length;
while(max >= 0) {
sum += max--;
}
for(int num : nums) {
sum -= num;
}
return sum;
}
}