寻找缺失的数-LintCode

来源:互联网 发布:软件成熟度模型下载 编辑:程序博客网 时间:2024/06/05 22:29

给出一个包含 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
原创粉丝点击