🍪🧁🍧

41.缺失的第一个正数

  1. 先排序再遍历
var firstMissingPositive = function(nums) {
    let n=nums.length
    let min=1
    nums.sort((a,b)=>a-b)
    for(let i=0;i<n;i++){
        if(nums[i]!=min){
            continue
        }
        min++
    }
    return min 
};
  1. 把nums[i]放在下标是nums[i]-1的位置上,这样得到的数组supposed to be1,2,3...n-1
    然后遍历数组,如果某个位置上的数不是期望的值就说明这个数在数组中不存在
var firstMissingPositive = function(nums) {
    let n=nums.length
    for(let i=0;i<n;i++){
        if(nums[i]-1==i||nums[i]<=0||nums[i]>n) continue
        while(nums[i]>0&&nums[i]<=n&&nums[i]!=nums[nums[i]-1]){//nums[i]!=nums[nums[i]-1]保证不会陷入死循环
            tmp=nums[nums[i]-1]
            nums[nums[i]-1]=nums[i]
            nums[i]=tmp
        }
    }
    for(let i=0;i<n;i++){
        if(nums[i]!=i+1) return i+1
    }
    return n+1
}
posted @ 2025-03-16 21:53  不想吃fun  阅读(7)  评论(0)    收藏  举报