leetcode 41

这题有点儿烧脑了,就是没有出现的最小的正数一定是 1 到 n + 1 这个范围的,为啥呢,因为总共是 n 个元素,我们考虑最极端的情况,全是正整数,那么 1 到 n 没有缺失,那最小的正整数就是 n + 1 了,如果有负数,那么负数肯定就不算了,比如说 -1 1 2 ,n == 3, 预期的结果是 3 ,在 1 到 4 这个范围内,所以还是比较秀的。这个结论,就是这个题的关键部分。然后我们可以考虑,一个比较大的数字,比如说,2147483647 是最大的正整数,那么不影响结论呀,我们输出缺失的最小的正整数,直接输出 1 就完事了。这个困难题绝对的纸老虎。

cpp 复制代码
class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size();
        for ( int i = 0; i < n; i++ ) {
            while ( nums[i] >= 1 && 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;
    }
};
相关推荐
小O的算法实验室几秒前
2025年SEVC,面向进化计算的学习注入式优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
handler011 分钟前
进程状态流转的本质:Linux 内核队列与底层数据结构解密
linux·运维·c语言·数据结构·c++·笔记·学习
啊我不会诶9 分钟前
2024北京市赛补题
c++·算法
shehuiyuelaiyuehao10 分钟前
算法13,滑动窗口,水果成篮
算法·哈希算法·散列表
智慧物业老杨10 分钟前
物业数智化转型实战:从单一服务到综合解决方案的技术落地路径
人工智能·算法·ai
自我意识的多元宇宙10 分钟前
数据结构--散列函数的构造方法
数据结构
如君愿13 分钟前
考研复习 Day 25 | 习题--计算机网络第三章(数据链路层 上)、数据结构(串)
数据结构·计算机网络·考研
夏末蝉未鸣0114 分钟前
Sort-Merge Join【排序连接算法】详解(python代码实现,以FULL JOIN为例)
数据结构·算法
tjl521314_2121 分钟前
01C++ 分离编译与多文件编程
前端·c++·算法
_日拱一卒22 分钟前
LeetCode:23合并K个升序链表
java·数据结构·算法·leetcode·链表·职场和发展