给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。
样例:
N = 4 且序列为 [0, 1, 3] 时,缺失的数为2。
挑战 :
在数组上原地完成,使用O(1)的额外空间和O(N)的时间。
#ifndef C192_H
#define C192_H
#include<iostream>
#include<vector>
using namespace std;
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();
if (len == 0)
return 0;
for (int i = 0; i < len;)
{
if (nums[i]!=i&&nums[i]!=len)
{
swap(nums[i], nums[nums[i]]);
}
else
{
++i;
}
}
for (int i = 0; i < len; ++i)
{
if (nums[i] != i)
{
return i;
break;
}
}
return len;
}
};
#endif