给出一个无序的整数数组,找出其中没有出现的最小正整数。
样例
样例 1:
输入:[1,2,0]
输出:3
样例 2:
输入:[3,4,-1,1]
输出:2
挑战
只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间。
class Solution {
public:
/**
* @param A: An array of integers
* @return: An integer
*/
int firstMissingPositive(vector<int> &A) {
// write your code here
for (int i = 0; i < A.size(); ) {
/* code */
if(A[i]==i+1) i++;
else{
if(A[i]>=1&&A[i]<A.size()&&A[A[i]-1]!=A[i])
swap(A[A[i]-1],A[i]);
else
i++;
}
}
for (int i = 0; i < A.size(); i++) {
/* code */
if(A[i]!=i+1) return i+1;
}
return A.size()+1;
}
};