41-缺失的第一个正数(没完全作对)

时间复杂度可以满足,常数级别额外空间弄不出来。。。。
可以使用HashSet,因为找的是没排序的最小正整数,所以这样就行,先把每一个元素都add进HashSet,之后,从1开始,遍历1到nums.length+1的所有数字,如果这个数字i不在set里面,就说明缺这个数字。用Set。。。好像是怕有重复的数字吧
class Solution {
public int firstMissingPositive(int[] nums) {
Set<Integer> set=new HashSet<>();
for(int i=0;i<nums.length;i++)
{
set.add(nums[i]);
}
for(int i=1;i<=nums.length;i++)
{
if(!set.contains(i))return i;
}
return nums.length+1;
}
}

浙公网安备 33010602011771号