码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 41 缺失的第一个整数

时间:2020-01-02 22:36:33      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:代码   正数   while   最小   style   etc   遍历   osi   index   

题目描述:给定一系列为排序的整数,求出最小的缺失的正数。

 

题解:对于给定的N个数,对于小于等于0以及大于N的数字不予处理,其余的数字在一次遍历的时候将其放在对应的位置上。例如给定<1,3,-1,4>,1的位置不用变,3与-1交换,4不用变。处理之后检查一下index上的数字是否对应,不对应的数字就是缺失那个正数。

 

代码:

int firstMissingPositive(vector<int>& nums) {
        int Len = nums.size();
        int pos = 0;
        for(int i=0;i<Len;i++)
        {
            while(nums[i] > 0 && nums[i] <= Len && nums[nums[i]-1] != nums[i]) 
            {
                int tmp_pos = nums[i]-1;
                int tmp = nums[tmp_pos];
                nums[tmp_pos] = nums[i];
                nums[i] = tmp;
            }
            while(pos < Len && nums[pos] == pos+1) pos++;
        }
        return pos+1;
    }

 

Leetcode 41 缺失的第一个整数

标签:代码   正数   while   最小   style   etc   遍历   osi   index   

原文地址:https://www.cnblogs.com/z1141000271/p/12142073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!