给出一个包含 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 n = nums.size();
if(n==0)
return 0;
else if(n==1)
return nums[0]==0?1:0;
int sum = 0;
for(auto x:nums)
sum+=x;
return (n)*(n+1)/2-sum;
}
};