- 先排序再遍历
var firstMissingPositive = function(nums) {
let n=nums.length
let min=1
nums.sort((a,b)=>a-b)
for(let i=0;i<n;i++){
if(nums[i]!=min){
continue
}
min++
}
return min
};
- 把nums[i]放在下标是nums[i]-1的位置上,这样得到的数组supposed to be1,2,3...n-1
然后遍历数组,如果某个位置上的数不是期望的值就说明这个数在数组中不存在
var firstMissingPositive = function(nums) {
let n=nums.length
for(let i=0;i<n;i++){
if(nums[i]-1==i||nums[i]<=0||nums[i]>n) continue
while(nums[i]>0&&nums[i]<=n&&nums[i]!=nums[nums[i]-1]){//nums[i]!=nums[nums[i]-1]保证不会陷入死循环
tmp=nums[nums[i]-1]
nums[nums[i]-1]=nums[i]
nums[i]=tmp
}
}
for(let i=0;i<n;i++){
if(nums[i]!=i+1) return i+1
}
return n+1
}