给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。
您在真实的面试中是否遇到过这个题?
Yes
样例
N = 4
且序列为 [0, 1, 3]
时,缺失的数为2
。
注意
可以改变序列中数的位置。
挑战
在数组上原地完成,使用O(1)的额外空间和O(N)的时间。
解析:由于知道0~N中缺少一个数,但是数组长度是一定的,所以求得数组长度等差求和减去数组的和即可。
class Solution {
public:
/**
* @param nums: a vector of integers
* @return: an integer
*/
int findMissing(vector<int> &nums) {
// write your code here
int len = nums.size();
int sum = 0;
for (int i = 0; i < len; ++i) {
sum += nums[i];
}
return len*(len+1)/2-sum;
}
};