First Missing Positive
找到第一丢失的正整数
思想:用负号映射位置
1 class Solution { 2 public: 3 int firstMissingPositive(vector<int>& nums) { 4 int length = nums.size(); 5 for(int i=0;i<length;i++) //去除0和负数 6 if(nums[i]<=0) 7 nums[i]=length+1; 8 9 for(int i=0;i<length;i++)//映射位置 10 if(abs(nums[i])<length+1&&nums[abs(nums[i])-1]>0) 11 nums[abs(nums[i])-1] *= -1; 12 13 for(int i=0;i<length;i++)//大于0的就是不存在的 14 if(nums[i]>0) 15 return i+1; 16 return length+1; 17 } 18 };