41. 缺失的第一个正数

java 复制代码
class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        for(int i=0;i<n;i++){//确保1在0位置;2在1位置;3在2位置....
            while(nums[i]>=1 && nums[i]<=n && nums[i]!=i+1 && nums[i]!=nums[nums[i]-1]){
                swap(nums,i,nums[i]-1);
            }
        }
        for(int j=0;j<n;j++){
            if(nums[j]!=j+1){
                return j+1;
            }
        }
        return n+1;
    }
    public void swap(int[] nums,int i,int j){
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
java 复制代码
class Solution {
    public int firstMissingPositive(int[] nums) {
        Set<Integer> hash = new HashSet<>();
        int n = nums.length;
        for(int i=0;i<n;i++){
            hash.add(nums[i]);
        }
        for(int j=1;j<=n;j++){
            if(!hash.contains(j)){
                return j;
            }
        }
        return n+1;
    }

}
相关推荐
zyjyyds11310 分钟前
和为0的四元组-双指针法(C语言实现)
c语言·数据结构·算法
炽烈小老头25 分钟前
【每天学习一点算法 2026/03/16】电话号码的字母组合
学习·算法
Lee川37 分钟前
时空迷宫探险记:从O(1)到O(2^n)的算法进化论
算法·面试
KangJX43 分钟前
Matrix获取卡顿堆栈 (Point Stack)
算法·客户端
靠沿1 小时前
【优选算法】专题十三——队列+宽搜(BFS)
算法·宽度优先
ccLianLian1 小时前
算法·字符串哈希
算法·哈希算法
SongYuLong的博客1 小时前
Linux IPC进程通信几种方法
linux·运维·算法
像污秽一样1 小时前
算法设计与分析-习题6.1
数据结构·算法
北京地铁1号线1 小时前
8.2 对比学习的损失函数
算法·机器学习·损失函数·对比学习
样例过了就是过了2 小时前
LeetCode热题100 分割回文串
数据结构·c++·算法·leetcode·深度优先·dfs