41.缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数
- 看了提示O(2n)=O(n)以及最近刚看了剑指offer的查找重复数的题,所以有了思路
- 第一次遍历将数组中元素放在与其下标相等的位置,第二次遍历找到不相等的就是答案
- 小于0和大于数组长度的数都可以直接不予考虑
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
for(int i = 0;i < nums.size();i++){
while (nums[i] > 0 && nums[i] <= nums.size() && nums[nums[i]-1] != nums[i])
{
swap(nums[i],nums[nums[i]-1]);
}
}
for(int i = 0;i < nums.size();i++){
if(nums[i]-1 != i) return i+1;
}
return nums.size()+1;
}
};
通过时间: