leetcode 41

张开发
2026/4/18 4:43:28 15 分钟阅读

分享文章

leetcode 41
这题有点儿烧脑了就是没有出现的最小的正数一定是 1 到 n 1 这个范围的为啥呢因为总共是 n 个元素我们考虑最极端的情况全是正整数那么 1 到 n 没有缺失那最小的正整数就是 n 1 了如果有负数那么负数肯定就不算了比如说 -1 1 2 n 3, 预期的结果是 3 在 1 到 4 这个范围内所以还是比较秀的。这个结论就是这个题的关键部分。然后我们可以考虑一个比较大的数字比如说2147483647 是最大的正整数那么不影响结论呀我们输出缺失的最小的正整数直接输出 1 就完事了。这个困难题绝对的纸老虎。classSolution{public:intfirstMissingPositive(vectorintnums){intnnums.size();for(inti0;in;i){while(nums[i]1nums[i]nnums[i]!nums[nums[i]-1]){swap(nums[i],nums[nums[i]-1]);}}for(inti0;in;i){if(nums[i]!i1){returni1;}}returnn1;}};

更多文章