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;
    }

}
相关推荐
OCR_133716212758 小时前
护照OCR校验位技术解析:从算法逻辑到工程落地,筑牢证件核验安全线
人工智能·算法
Hello.Reader8 小时前
算法基础(十三)——随机算法为什么有时主动引入随机性
java·数据库·算法
likerhood8 小时前
ConcurrentHashMap底层数据结构和面试常见问题
java·数据结构·面试·hashmap
老鱼说AI8 小时前
现代 LangChain 开发指南:从 LCEL 原理到企业级 RAG 与 Agent 实战
java·开发语言·人工智能·深度学习·神经网络·算法·机器学习
小许同学记录成长8 小时前
基于幅度形态与参数聚类的工作模式判别
python·算法·scikit-learn
Languorous.8 小时前
C++数据结构高阶|布隆过滤器(Bloom Filter)深度解析:从原理到手写实现,面试高频考点全覆盖
数据结构·c++·面试
gumichef8 小时前
二叉树_堆
算法
Liangwei Lin9 小时前
LeetCode 70. 爬楼梯
算法
洛水水9 小时前
【力扣100题】38.路径总和 III
算法·leetcode·深度优先
小侯不躺平.9 小时前
C++ Boost库【2】 --stringalgo字符串算法
linux·c++·算法