我选择了一个我比较能看懂的,
int minNumberDisappeared(vector<int>& nums) {
// write code here
map<int, int>hash;
int n = nums.size();
//哈希表记录数组中出现的每个数字
for(int i = 0; i < n; i++)
hash[nums[i]]++;
int res = 1;
//从1开始找到哈希表中第一个没有出现的正整数
while(hash.find(res) != hash.end())
res++;
return res;
}
利用数组的长度,对应值和下标的对应关系
int minNumberDisappeared(vector<int>& nums) {
// write code here
int n = nums.size();
for (int i = 0; i < n; ++i) {
while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {
swap(nums[nums[i] - 1], nums[i]);
}
}
for (int i = 0; i < n; ++i) {
if (nums[i] != i + 1) {
return i + 1;
}
}
return n + 1;
}