给出一个包含 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