解题思路:
原地哈希,没有出现的最小的正整数一定在1~N+1之间,对于每个元素,将以它为坐标的位置变为负数,视为存在,最后遍历1~N,以nums作为哈希表。
class Solution { public int firstMissingPositive(int[] nums) { int n=nums.length; for(int i=0;i<n;i++){ if(nums[i]<=0||nums[i]>n){ nums[i]=n+5; } } for(int i=0;i<n;i++){ if(Math.abs(nums[i])!=n+5){ if(nums[Math.abs(nums[i])-1]<0){ continue; } nums[Math.abs(nums[i])-1]*=-1; } } for(int i=1;i<=n;i++){ // System.out.println(nums[i-1]); if(nums[i-1]>0){ return i; } } return n+1; } }
07-23
267
07-13
621
06-25
368
11-17