思路: 桶排序,每一个数放在该放的位置,1放在第1个位置,2放在第2个位置,n放在第n个位置
注意!!!坐标从0开始, 5放在下标为4 个位置,i放在下标为i-1 的位置。
class Solution {
public:
/**
* @param A: a vector of integers
* @return: an integer
*/
int firstMissingPositive(vector<int> A) {
// write your code here
int len=A.size();
for(int i=0;i<len;){
if(A[i]==i+1)
i++;
else if(A[i]>=1&&A[i]<=len&&A[A[i]-1]!=A[i])
swap(A[i],A[A[i]-1]);
else
i++;
}
for(int j=0;j<len;j++){
if(A[j]!=j+1)
return j+1;
}
return len+1;
}
};