缺失的第一個正數
給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。
示例 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}
*/
var firstMissingPositive = function(nums) {
function s(a,b){ // 排序
if(a>b) return 1
return -1
}
var sortNums = nums.sort(s);
var j=0
var len = sortNums.length
if(sortNums[0]<1){ // 去除小於0的項
while(j++<len){
if(sortNums[j]>=1){
break
}
}
sortNums=sortNums.splice(j,len-1)
}
if(sortNums.length ===0){
return 1
}
var mis = 1; // 默認缺失1
var i = 1;
while(i<len){
if(sortNums[i]-sortNums[i-1] >1){
mis = sortNums[i-1] +1;
break;
}
i++
}
if(sortNums[0] === 1 && mis === 1){
return sortNums[sortNums.length-1]+1
}
if(sortNums[0] > 1){
return 1
}
return mis
};
執行用時 :76 ms
內存消耗 :35.1 MB