题目:
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 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
};
网友评论