Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Your algorithm should run in O(n) time and uses constant space.
主题思想: 这道题要求O(n) 那就是遍历一遍, 肯定不能排序了,所以利用map 去查找第一次,没有出现的正整数
class Solution {
public int firstMissingPositive(int[] nums) {
if(nums==null||nums.length==0) return 1;
Map<Integer,Boolean> record=new HashMap<Integer,Boolean>();
int mx=0;
int mn=Integer.MAX_VALUE;
int i=0;
for(i=0;i<nums.length;i++){
if(nums[i]<=0) continue;
if(nums[i]>mx) mx=nums[i];
record.put(nums[i],true);
}
if(mx==0) return 1;
for(i=1;i<=mx;i++){
if(!record.getOrDefault(i,false))break;
}
return i;
}
}