首页 > 代码库 > LeetCode First Missing Positive

LeetCode First Missing Positive

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.

 

 1 public class Solution { 2     public int firstMissingPositive(int[] A) { 3         if (A.length == 0) { 4             return 1; 5         } 6         int i=0; 7         int n = A.length; 8         while (i < n) { 9             if (A[i] != i + 1 && A[i] >= 1 && A[i] <= n && A[A[i] - 1] != A[i]) {10                 swap(A,i,A[i]-1);11             }else ++i;12         }13         for (int j = 0; j < A.length; j++) {14             if (A[j] != j + 1) {15                 return j + 1;16             }17         }18         return n + 1;19     }20         void swap(int[] A, int a, int b) {21         int temp = A[a];22         A[a] = A[b];23         A[b] = temp;24     }25 }

 

LeetCode First Missing Positive