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
本文的要求:查找出缺失的最小正整数,并要求时间复杂度为O(n),
本题思路,新建一个数组用于存放对应的数字是否存在如
tmp[0]=1 表示 数字1存在 tmp[1] = 0 表示数字2不存在 用index+1来表示对应的数字:
public int firstMissingPositive(int[] nums) {
int n = nums.length;
int [] tmps = new int[nums.length];
for(int index=0;index<n;index++) {
if(nums[index] >= 1 && nums[index]<=n) {
tmps[nums[index]-1] = 1;
}
}
int index = 0;
for(;index<tmps.length;index++) {
if(tmps[index]<=0) {
break;
}
}
return index+1;
}