缺失一个正数

给定一个未排序的整数数组,找出其中没有出现的最小的正整数。

示例 1:

输入: [1,2,0]
输出: 3
示例 2:

输入: [3,4,-1,1]
输出: 2
示例 3:

输入: [7,8,9,11,12]
输出: 1

你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。

/**
 * @param {number[]} nums
 * @return {number}
 */
function comp(a,b){
    return a-b;
}
var firstMissingPositive = function(nums) {
    nums.sort(comp);
    if(nums.length==0||nums[0]>1||nums[nums.length-1]<=0){
        return 1;
    }    
    let left =0;
    if(nums[0]<0){
        while(left<nums.length&&nums[left]<0) left++;
        if(nums[left]>1){
            return 1;
        }     
    }
    for(var i=left;i<nums.length;i++){
        if(nums[i]==nums[i+1]) continue;
        if(nums[i]+1!=nums[i+1]){
            if(nums[i]+1>0)
                return nums[i]+1; 
        }
    }
    return nums[nums.length-1]+1;
};

实现方式:没有使用任何算法

var firstMissingPositive = function(nums) {
    for(var i = 1; i > 0; i ++) {
        if(nums.indexOf(i) < 0) {
            return i;
        }
    }
};

来源:https://leetcode-cn.com/u/bei-jing-xia-yu-liao/

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-missing-positive
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/panjingshuang/p/11683450.html