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 };

 

posted @ 2015-05-04 20:36  醉剑客  阅读(157)  评论(0编辑  收藏  举报