【LeetCode热题100】【数组】缺失的第一个正数

题目链接:41. 缺失的第一个正数 - 力扣(LeetCode)

要找出这个数组里面没有出现的最小的正数,最小的正数是1,n个元素的数组能够让答案最大为n+1,也就是位置0对应1,位置1对应2......如果我们按照这样的对应关系重新整理一下数组,从0到n-1遍历,num[i]和i+1不相等的就是缺失的最小的正数

如何整理数组呢,找到范围在1到n之间的num[i],它正确的位置应该在num[i]-1,交换这两个的值

复制代码
class Solution {
public:
    int firstMissingPositive(vector<int> &nums) {
        int n = nums.size();
        for (int i = 0; i < n; ++i) {
            while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1])
                swap(nums[i], nums[nums[i] - 1]);
        }
        for (int i = 0; i < n; ++i)
            if (nums[i] != i + 1)
                return i + 1;
        return n + 1;
    }
};
相关推荐
我叫黑大帅15 分钟前
从奶奶挑菜开始:手把手教你搞懂“TF-IDF”
人工智能·python·算法
傻豪25 分钟前
【Hot100】贪心算法
算法·贪心算法
黑色的山岗在沉睡1 小时前
LeetCode 3665. 统计镜子反射路径数目
算法·leetcode·职场和发展
是阿建吖!2 小时前
【动态规划】回文串问题
算法·动态规划
纵有疾風起2 小时前
数据结构——二叉树
c语言·数据结构·算法·链表
艾醒2 小时前
大模型面试题剖析:全量微调与 LoRA 微调
人工智能·python·算法
ZHOU_WUYI3 小时前
介绍GSPO:一种革命性的语言模型强化学习算法
人工智能·算法·语言模型
listhi5203 小时前
三电平逆变器SVPWM控制(无解耦功能)与谐波分析
算法·机器学习·支持向量机
岁忧3 小时前
(LeetCode 每日一题) 36. 有效的数独 (数组、哈希表)
java·c++·算法·leetcode·go·散列表
BlackQid4 小时前
基于C的二分查找和查月份天数小程序
算法·c