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

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

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

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

相关推荐
信奥卷王几秒前
2025年3月GESPC++四级真题解析(含视频)
算法
后来后来啊几秒前
2026.1.21学习笔记
笔记·学习·leetcode·#算法·#cpp
圣保罗的大教堂1 分钟前
leetcode 3314. 构造最小位运算数组 I 简单
leetcode
Coder_Boy_1 分钟前
基于SpringAI的在线考试系统-成绩管理功能实现方案
开发语言·前端·javascript·人工智能·spring boot
幻云20105 分钟前
Python深度学习:从筑基与巅峰
前端·javascript·vue.js·人工智能·python
_OP_CHEN6 分钟前
【算法基础篇】(四十九)数论之中国剩余定理终极指南:从孙子算经到算法竞赛
算法·蓝桥杯·数论·中国剩余定理·算法竞赛·乘法逆元·acm/icpc
Light606 分钟前
庖丁解牛:深入JavaScript内存管理,从内存泄漏到AI赋能的性能优化
javascript·人工智能·性能优化·内存管理·垃圾回收·内存泄漏·v8引擎
2401_827499997 分钟前
代码随想录-图论28
算法·深度优先·图论
ValhallaCoder9 分钟前
Day51-图论
数据结构·python·算法·图论
3345543211 分钟前
vue表格遍历根据表头里的类型和每行的状态来判断
javascript·vue.js·chrome