LeetCode 41. First Missing Positive
必须利用原数组进行操作,第一想到的就是利用元素的对应下标,把nums[i]-1下标的元素*-1来做。但是由于0存在,所以不行。
可以利用while循环,把当前位置符合要求的元素swap到正确的位置,最后只要遍历nums,如果 i 下标的数不为 i+1,说明 i+1就是答案。如果没有这样的数,那么答案就是 nums.size()+1。
class Solution { public: int firstMissingPositive(vector<int>& nums) { for (int num:nums){ // put num into nums[num-1] while (num>0 && num<=nums.size() && nums[num-1]!=num){ swap(num,nums[num-1]); } } for (int i=0;i<nums.size();++i){ if (nums[i]!=i+1) return i+1; } return nums.size()+1; } };

浙公网安备 33010602011771号