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.
typical 1-n consecutive number problem. only thing to note is the edge cases like [1,2]. so to do in place, store A[0]=1,A[1]=2, etc
public class Solution {
public int firstMissingPositive(int[] A) {
// Start typing your Java solution below
// DO NOT write main() function
if(A.length==0||A==null) return 1;
for(int i=0;i<A.length;i++){
int t=A[i];
while(t<A.length+1&&t!=i+1&&t>0&&A[t-1]!=t){
int tmp=A[t-1];
A[t-1]=t;
t=tmp;
}
A[i]=t;
}
for(int i=0;i<A.length;i++)
if(A[i]!=i+1) return i+1;
return A.length+1;
}
}
本文介绍了一种算法,用于在未排序的整数数组中找到第一个缺失的正整数,时间复杂度为O(n),空间复杂度为常数。通过在原地操作数组,算法确保了效率和内存使用效率。

被折叠的 条评论
为什么被折叠?



