41. First Missing Positive

来源:互联网 发布:域名备案要钱吗 编辑:程序博客网 时间:2024/06/08 12:50

1、题目描述

给一个有n个元素的乱序的数组,找到第一个缺失的正整数。


2、思路

把每一个元素放到它对应的位置上去,比如nums[i]应该放在nums[nums[i] -1]这个位置。

如果nums[i] <=0就不管它啦。

最后,找出第一个nums[i] != i+1的位置,即为答案。

不存在的话就返回n+1.


3、代码

    int firstMissingPositive(vector<int>& nums) {        int n = nums.size();         for(int i=0;i<n;i++){            while(nums[i]<=n&&nums[i]>=1 && nums[nums[i]-1]!=nums[i]){                swap(nums[i],nums[nums[i]-1]);            }        }        for(int i=0;i<n;i++){            if(nums[i]!=i+1)                return i+1;        }        return n+1;    }