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;
}
};
通过时间:

本文介绍了一种在未排序整数数组中查找最小缺失正数的高效算法。通过两次遍历,首先调整数组元素到其对应位置,再查找第一个不匹配的元素,从而找到缺失的正数。

被折叠的 条评论
为什么被折叠?



