package com.ytx.array;
import java.util.Arrays;
/** 题目:first-missing-positive
*
* 描述: Given an unsorted integer array, find the first missing positive integer.
For example,
Given[1,2,0]return3,
and[3,4,-1,1]return2.
Your algorithm should run in O(n) time and uses constant space.
*
* @author yuantian xin
*
*/
public class First_missing_positive {
public int firstMissingPositive(int[] A) {
if (A == null || A.length < 1) return 1;
//把小于等于A.length的正数A[i]放到第A[i]-1个位置上
for (int i = 0; i < A.length; i++) {
while (A[i] > 0 && A[i] <= A.length && A[A[i] - 1] != A[i]) {
int tmp = A[A[i] - 1];
A[A[i] - 1] = A[i];
A[i] = tmp;
}
}
for (int i = 0; i < A.length; i++) {
if (A[i] != i + 1) {
return i + 1;
}
}
return A.length + 1;
}
public static void main(String[] args) {
/*int A [] = {3,4,-1,1};*/
int A [] = {1000,-1};
int res;
res = new First_missing_positive().firstMissingPositive(A);
System.out.println(res);
}
}