【LC】41. 缺失的第一个正数

题目描述:

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:

复制代码
输入:nums = [1,2,0]
输出:3
解释:范围 [1,2] 中的数字都在数组中。

示例 2:

复制代码
输入:nums = [3,4,-1,1]
输出:2
解释:1 在数组中,但 2 没有。

示例 3:

复制代码
输入:nums = [7,8,9,11,12]
输出:1
解释:最小的正数 1 没有出现。

题解:

复制代码
class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        for (int i = 0; i < n; ++i) {
            while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {
                int temp = nums[nums[i] - 1];
                nums[nums[i] - 1] = nums[i];
                nums[i] = temp;
            }
        }
        for (int i = 0; i < n; ++i) {
            if (nums[i] != i + 1) {
                return i + 1;
            }
        }
        return n + 1;
    }
}
相关推荐
杰克尼3 分钟前
JavaWeb_p165部门管理
java·开发语言·前端
longgyy14 分钟前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
一成码农25 分钟前
JavaSE面向对象(下)
java·开发语言
Madison-No741 分钟前
【C++】探秘vector的底层实现
java·c++·算法
我登哥MVP1 小时前
Ajax 详解
java·前端·ajax·javaweb
Swift社区1 小时前
LeetCode 401 - 二进制手表
算法·leetcode·ssh
派大星爱吃猫1 小时前
顺序表算法题(LeetCode)
算法·leetcode·职场和发展
vue学习1 小时前
docker 学习dockerfile 构建 Nginx 镜像-部署 nginx 静态网
java·学习·docker
_extraordinary_1 小时前
Java Spring日志
java·开发语言·spring