Leetcode 41.缺失的第一个正数 JavaScript (Day 7)

javascript 复制代码
var firstMissingPositive = function(nums) {
   const n=nums.length;
   for(let i=0;i<n;i++){
        while(nums[i]>0&&nums[i]<=n&&nums[i]!=nums[nums[i]-1]){
                const j=nums[i]-1;
                [nums[i],nums[j]]=[nums[j],nums[i]];
        }
    }
    
    for(let i=0;i<n;i++){
        if(nums[i]!=i+1) return i+1;
    }
    return n+1;
};

算法核心:先通过循环交换,使得每个位置上的值是与其索引相对应的,比如nums0=1,nums1=2...负数和0不管直接跳过,重复的也直接跳过,排序完之后,遍历数组,如果numsi!=i+1,说明i+1就是缺失的正数,如果全部都符合,就返回n+1
算法注意点:循环的终止条件

javascript 复制代码
nums[i]!=nums[nums[i]-1]

我们不要用numsi!=i+1这个条件,因为numsi!=numsnums\[i-1]不仅可以包括前面的那个条件,还可以跳过重复的数比如数组1,1,2

相关推荐
Dillon Dong2 小时前
【风电控制】TI TMS320F28379D 双CPU架构解析与任务分布设计
嵌入式硬件·算法·变流器·风电控制
小羊在睡觉8 小时前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
3DVisionary8 小时前
蓝光三维扫描:医疗制造的精度焦虑怎么解
人工智能·算法·制造·蓝光三维扫描·医疗制造·三维检测·义齿检测
GISer_Jing8 小时前
Three.js着色器编译机制深度解析
javascript·webgl·着色器
丷丩8 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
好评笔记8 小时前
机器学习面试八股——常用损失函数
人工智能·深度学习·算法·机器学习·校招
weixin_468466858 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
油炸自行车8 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
sheeta19988 小时前
LeetCode 每日一题笔记 日期:2026.05.29 题目:3300. 最小元素
笔记·leetcode
_日拱一卒8 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先