这题要求只能用常数个空间,不过int这个东西能表示的正整数本来也就是有限的,所以我们不妨设置一个数组index,数组的每个值等于该值index的整数出现的次数,找出第一个出现次数为0的正整数就好,代码如下:
class Solution {
public:
int firstMissingPositive(int A[], int n) {
int index[65536] = {0};
int i;
for(i =0;i<n;i++){
if(A[i]>0) index[A[i]]+=1;
}
for(i=1;i<65536;i++ ){
if(index[i]==0) return i;
}
}
};