LeetCode-First Missing Positive

题目要求:
在一个给定的整数数组中,检索不在此数组的最小整数;
Example 1:

Input: [3,4,-1,1] Output: 2
解题思路:

数组的长度为N,其最多存储N个正整数。如果整数中存在大于N的数,或小于等于0的数。则数组中小于等于N的整数的个数肯定小于N。则小于等于N且大于0的整数无法构成连续数列。因此,所求的数必然要小于等于N。因此我们只需将大于0且小于等于N的数,放在0~N-1对应的位置即可。第一个不对应的点便是所求的数。代码如下:

class Solution {
public:
    int firstMissingPositive(vector& nums) {
        int i=0;
        int res =nums.size()+1;
        for (;i0 && nums[i]<=nums.size() && nums[nums[i]-1] != nums[i]){
                
                auto tmp = nums[nums[i]-1];
                nums[nums[i]-1] = nums[i];
                nums[i] = tmp;
            }else{ 
                i++;
            }
        }
        for (i=0;i

你可能感兴趣的:(LeetCode-First Missing Positive)