刷题记录(First Missing Positive)

这篇博客介绍了两种JavaScript解决方案来解决LeetCode上的First Missing Positive问题。第一种方法通过交换元素使其到达正确位置,但可能导致超时;第二种方法则通过改变负数和正数的位置来找到缺失的正整数。这两种方法都涉及到数组操作和正整数处理。
摘要由CSDN通过智能技术生成

Leecode: First Missing Positive (JS解答)

在这里插入图片描述
解题思路:一种是互换方法,把数放到它对应的位置上去,比如把2放在nums[1]即数组第2个,但是leecode提交时会显示超时
第二种方法思路用图来表示:
在这里插入图片描述
方法一代码:

function firstMissingPositive(nums: number[]): number {
    var n:number = nums.length;
     for(var i = 0; i < n; i++){
         while(nums[i] > 0 && nums[i] <= n && nums[i] !== nums[nums[i]-1]){
             var temp:number = nums[i];
             nums[i] = nums[nums[i]-1];
             nums[nums[i]-1] = temp;
         }
     }
     for(var i = 0; i < n; i++){
         if(nums[i] !== i+1){
             return i+1;
         }
     }
     return n + 1;
 };

方法二代码:

function firstMissingPositive2(nums: number[]): number {
     if(nums === null || nums.length === 0) return 0;
     var n:number = nums.length;
     for(var i = 0; i < n; i++){
         if(nums[i] <= 0){
             nums[i] = n + 1;
         }
     }
     for(var i = 0; i < n; i++){
         var temp:number = Math.abs(nums[i]);
         if(temp <= n){
             nums[temp-1] = -Math.abs(nums[temp-1])
         }
     }
     for(var i = 0; i < n; i++){
         if(nums[i] > 0){
             return i+1;
         }
     }
     return n + 1;
 };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值