题目描述:
Given an unsorted integer array, find the smallest missing positive integer.
Example 1:
Input: [1,2,0]
Output: 3
Example 2:
Input: [3,4,-1,1]
Output: 2
Example 3:
Input: [7,8,9,11,12]
Output: 1
Note:
Your algorithm should run in O(n) time and uses constant extra space.
大概的意思就是计算一个数组里缺失的第一个最小正数,代码如下:
var firstMissingPositive = function(nums) {
//先对数组进行交换排序
for(var i=0;i<nums.length;i++){
for(var j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
var temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
//数组最大的小于等于零,或最小的大于一,或长度等于零都返回1
if(nums[nums.length-1]<=0||nums[0]>1||nums.length==0){
return 1;
}
for(var m=0;m<nums.length;m++){
if(nums[m+1]-nums[m]>1&&nums[m+1]>0&&nums[m]>=0){
return nums[m]+1;
}
if(nums[m+1]-nums[m]>1&&nums[m+1]>1&&nums[m]<0){
return 1;
}
}
return nums[nums.length-1]+1;
};
直接运行console.log(firstMissingPositive([3,4,-1,1]))就可以在浏览器上输出答案了。
在leetcode上提交运行时间为60ms,有需要改进的各位dalao提供下建议。