leetcode--First Missing Positive

来源:互联网 发布:魔域淘宝绑6星vip 编辑:程序博客网 时间:2024/06/06 04:40

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.

[java] view plain copy
  1. public class Solution {  
  2.     public int firstMissingPositive(int[] A){  
  3.         if(A.length==0||A==null)  
  4.           return 1;  
  5.         //把元素放入正确的位置,例如1放在A[0],2放在A[1];负数,相同数字,不必理会,因为已经出现过了,负数则必然连续(但不是顺序的)  
  6.         for(int i = 0;i<A.length;i++){  
  7.           while(A[i]!=i+1){  
  8.             if(A[i]>=A.length||A[i]<=0||A[i]==A[A[i]-1])  
  9.               break;  
  10.             int temp = A[i];  
  11.             A[i] = A[temp-1];  
  12.             A[temp-1] = temp;  
  13.           }  
  14.         }  
  15.           
  16.         for(int i = 0;i<A.length;i++){  
  17.           if(A[i]!=i+1)  
  18.             return i+1;  
  19.         }  
  20.         return A.length+1;  
  21.   }  

原文链接http://blog.csdn.net/crazy__chen/article/details/45726257

原创粉丝点击