空间换时间,搞个300长度的数组temp就可以了,遍历nums大于300或者小于等于0的不管,其他放到temp中就可以了,再从小到大遍历一遍temp就可以了。
class Solution {
public int firstMissingPositive(int[] nums) {
boolean[] temp=new boolean[301];
for(int i=0;i<nums.length;++i){
if(nums[i]<=300&&nums[i]>0){
temp[nums[i]]=true;
}
}
for(int i=1;i<=300;++i){
if(!temp[i]){
return i;
}
}
return -1;
}
}