classSolution {public:intfirstMissingPositive(vector<int>& nums) {if(nums.empty()) return1; // store in set set<int> s;for(int i=0; i<nums.size(); i++) {s.insert(nums[i]); } // find the max element in numsauto maxNum =max_element(nums.begin(),nums.end()); // go through each in tableint i;for(i=1; i<*maxNum+1; i++){if(s.find(i) ==s.end())break; }return i; }};
解法二 - 利用 array 的 index 來表示 i-th positive int 在不在
這個解法的主要概念有兩個:
如果 nums 的大小是 n,first missing positive int 最大只能是 n+1。
我們可以用 nums[1] 的值表示 1 這個 int 在不在,nums[2] 表示 2 在不在...nums[0] 表示 n 在不在。