class Solution { public: /** * @param A: a vector of integers * @return: an integer */ int findMaxArr(vector<int> vec) { int max=vec[0],size=vec.size(); for(int i=1;i<size;++i){ if(vec[i]>max) max=vec[i]; } return max; } int firstMissingPositive(vector<int> A) { // write your code here if(A.empty()) return 1; if(A.size()==1&&A[0]>0){ return A[0]==1?2:1; } const int maxsize=findMaxArr(A)+1; if(maxsize<=1) return 1; int count[maxsize]; memset(count,0,sizeof(count)); for(auto e:A){ if(e>0) ++count[e]; } for(int i=1;i<maxsize;++i) if(0==count[i]) return i; return maxsize; } };