leecode 41 求缺失的第一个正整数

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

示例 1:

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

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

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

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

var firstMissingPositive = function(nums) {
    if(nums.length ==0) return 1;//为空数组的特例
    nums.sort(function(a,b){return a-b});//排序
    nums = [... new Set(nums)] //去掉重复数字
    let index = nums.indexOf(1);//求1的位置
    if(index<0) return 1;
    for(var i=index;i<nums.length;i++){//返回不递加1的元素
        if(nums[i] != (i-index)+1) return (i-index)+1
    }
  //数据都累加1,返回最大的值并加1
    return nums[nums.length-1]+1
    
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容