41. First Missing Positive【力扣】

题意理解

求一组数字中最小的缺失正整数

问题分析

用下标位置固定1到n的数,问题变成了填充这n个数。如果有缺失就是所要求的数,如果没有就是n+1。

其他

没想到。

链接

    int firstMissingPositive(vector<int>& nums) {
        int len = nums.size();
        int i;
        for(i = 0; i < len; i ++)    //遍历数组
        {
            //当数值在1到n之间,且数值和对应i+1位置不等
            while (nums[i] >= 1 && nums[i] <= len && nums[nums[i] - 1] != nums[i])
            {
                //持续交换两个位置数值
                swap(nums[nums[i] - 1], nums[i]);
            }         
            for(int v : nums)
            cout << v << '\t';
            cout << endl;
        }
        for(int v : nums)
            cout << v << '\t';
        for(i = 0; i < len; i++)
        {
            if (i + 1 != nums[i])    //当找到缺失的数值
                break;                //跳出循环
        }
        return i + 1;    //输出
    }

猜你喜欢

转载自blog.csdn.net/xiexie1357/article/details/88361864