41. First Missing Positive
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.
题目:寻找第一个丢失的整数意思为【1,2,4,5,6,7】那么丢失的是3,如果【1,1000】,这时丢失的是2
注意需要在O(n)时间内而且不允许使用额外的空间
所以题目是需要你在从1 ~ +∞的范围中,找到没有在输入数组出现过的最小的正public class Solution { public int firstMissingPositive(int[] nums) { int len=nums.length;if(nums==null||len==0)
return 1; //首先判断当前元素是否为整数,否则直接过,并且num[j]<len不然造成数组越界,最后判断如果nums[j]-1!=[j]防止死循环 for(int j=0;j<len;j++){ while(nums[j]>0&&nums[j]<=len&&(nums[j]-1)!=j){ int temp=nums[nums[j]-1]; if(temp==nums[j]){ break; } nums[nums[j]-1]=nums[j]; nums[j]=temp; } } for(int j=0;j<len;j++){ if(nums[j]!=j+1){ return j+1; } }
return len+1; } }