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

来源:互联网 发布:java 浏览器下载文件 编辑:程序博客网 时间:2024/06/06 01:37
/*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.*/public class FindFirstLostPositive {public static void main(String[] args) {System.out.println(new FindFirstLostPositive().firstMissingPositive(new int[]{-1,-2,-3,1,2,3,4,5,6,7,8,9}));} public int firstMissingPositive(int[] nums) {         if(nums.length==0||nums==null)      return 1;    //1放在nums[0],2放在nums[1]    for(int i = 0;i<nums.length;i++)    {      while(nums[i]!=i+1)      {        if(nums[i]>=nums.length||nums[i]<=0||nums[i]==nums[nums[i]-1])          break;        int temp = nums[i];        nums[i] = nums[temp-1];        nums[temp-1] = temp;      }    }        for(int i = 0;i<nums.length;i++)    {      if(nums[i]!=i+1)        return i+1;    }    return nums.length+1; }}

0 0