041 First Missing Positive 第一个缺失的正数

给一个未排序的数组,找出第一个缺失的正整数。
例如,
[1,2,0] 返回 3,
[3,4,-1,1] 返回 2。
你的算法应该在 O(n) 的时间复杂度内完成并且使用常数量的空间。
详见:https://leetcode.com/problems/first-missing-positive/description/

Java实现:

class Solution {
    public int firstMissingPositive(int[] nums) {
        int n=nums.length;
        if(n<1||nums==null){
            return 1;
        }
        for(int i=0;i<n;++i){
            while(nums[i]>0&&nums[i]<=n&&nums[i]!=nums[nums[i]-1]){
                int tmp=nums[nums[i]-1];
                nums[nums[i]-1]=nums[i];
                nums[i]=tmp;
            }
        }
        for(int i=0;i<n;++i){
            if(nums[i]!=i+1){
                return i+1;
            }
        }
        return n+1;
    }
}

 参考:https://www.cnblogs.com/grandyang/p/4395963.html

原文地址:https://www.cnblogs.com/xidian2014/p/8689002.html