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 }
原文地址:https://www.cnblogs.com/birdhack/p/4219944.html