【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;
    }
}
相关推荐
渣哥几秒前
聊聊我和 ArrayList、LinkedList、Vector 的“一地鸡毛”
java
浮游本尊4 分钟前
Java学习第20天 - 性能优化与监控
java
纪莫28 分钟前
技术面:Java并发(线程同步、死锁、多线程编排)
java·java面试⑧股
惯导马工36 分钟前
【论文导读】IDOL: Inertial Deep Orientation-Estimation and Localization
深度学习·算法
衍余未了39 分钟前
k8s 内置的containerd配置阿里云个人镜像地址及认证
java·阿里云·kubernetes
老姜洛克40 分钟前
自然语言处理(NLP)之n-gram从原理到实战
算法·nlp
叽哥44 分钟前
Kotlin学习第 4 课:Kotlin 函数:从基础定义到高阶应用
android·java·kotlin
渣哥1 小时前
使用 HashMap 提高性能的小技巧
java
kyle~1 小时前
排序---快速排序(Quick Sort)
java·开发语言
1白天的黑夜11 小时前
哈希表-49.字母异位词分组-力扣(LeetCode)
c++·leetcode·哈希表