zoukankan      html  css  js  c++  java
  • leetcode:首个缺少的最小正整数(js实现。)

    题目描述:
    // 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
    //
    // 示例 1:
    //
    // 输入: [1,2,0]
    // 输出: 3
    // 示例 2:
    //
    // 输入: [3,4,-1,1]
    // 输出: 2
    // 示例 3:
    //
    // 输入: [7,8,9,11,12]
    // 输出: 1
    //下方程序已验证通过,用时较长,188ms

    var firstMissingPositive = function(nums) {
    if (nums === undefined || nums.length == 0 || (nums.length == 1 && nums[0]!=1)) {//输入部分没有元素或者只有一个元素且不为1时
    return 1;
    }
    if(nums.length == 1 && nums[0]==1){ //只有一个元素,且为1,则返回2
    return 2;
    }
    nums.sort(function(a,b){
    return a - b;
    }); //使用排序算法时需注意:不传参数按字符排序。需要自己传入回调函数

    for(var i=0;i<nums.length;i++){ // -1 0 1 2 3 4 返回5
    if(nums[i]>0){
    break;
    }
    }
    // console.log("i= "+i);
    var tmp = nums[i]; //使用一个变量保存 nums[i],因为后续 nums[i]一直改变,不能在下面的for循环中直接使用 if(nums[i]!=1).
    for(var j=i;j<nums.length;j++){
    if(tmp!=1){
    return 1;
    }
    if((nums[i]==nums[j]) || (nums[j]-nums[i]==1)){
    // console.log("nums0["+i+"] = "+nums[i]);
    nums[i]=nums[j];
    // console.log("nums1["+i+"] = "+nums[i]);
    }else{
    return nums[i]+1;
    }
    }
    return nums[i]+1;
    };
    var arr=[1,2,0];
    console.log(firstMissingPositive(arr));
  • 相关阅读:
    Java——static
    Java——package与import
    Java——方法重写
    Java——super
    Java——类的继承、访问控制
    Java——API文档
    Java——对象转型
    Java——动态绑定和多态
    Java——抽象类
    redis在linux上的安装和配置
  • 原文地址:https://www.cnblogs.com/yyzyxy/p/10279894.html
Copyright © 2011-2022 走看看