6/06/2014

107. First Missing Positive

public class Solution {
    public int firstMissingPositive(int[] A) {
        int i = 0;
       
        while (i<A.length) {
            if (A[i]>0 && A[i]<A.length+1 && A[i]!=i+1 && A[i]!=A[A[i]-1]) swap(A, i, A[i]-1);
            else i++;
        }
       
        for (i=0; i<A.length; i++) {
            if (A[i]!=i+1) return i+1;
        }
       
        return A.length+1;
    }
   
    public void swap(int[] A, int a, int b) {
        int temp = A[a];
        A[a] = A[b];
        A[b] = temp;
    }
}

没有评论:

发表评论