41. First Missing Positive

来源:互联网 发布:人工智能行业报告 36kr 编辑:程序博客网 时间:2024/05/17 01:10

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

 分析: 数组中可能包含重复的元素,方法就是将元素放到其应该正确被放的位置,然后重新开始遍历一遍,若某个位置对应的不是其应该对应的值,则返回.

时间复杂度:O(N)

空间复杂度: O(1)

public int firstMissingPositive(int[] nums) {        if(nums==null)            return 1;        int len=nums.length;        int temp;        int j;        for(int i=0;i<len;i++){            while(nums[i]>0&&nums[i]<=len&&nums[i]!=nums[nums[i]-1]){//当前元素所在位置不对                temp=nums[i];                j=nums[i]-1;                nums[i]=nums[j];                nums[j]=temp;            }        }        for(int i=0;i<len;i++){            if(nums[i]!=i+1)                return i+1;        }        return len+1;    }



0 0
原创粉丝点击