41. First Missing Positive


https://leetcode.com/problems/first-missing-positive/


41. First Missing Positive

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public int firstMissingPositive(int[] nums) {
if(nums.length==0)return 1;
else if(nums.length==1){
if(nums[0]<=0)return 1;
return nums[0]>1?1:2;
}
Arrays.sort(nums);

//没有1的情况
boolean flag = false;
for(int i=0;i<nums.length;i++) {

if(nums[i]==1) {
flag = true;
}
}
if(!flag)return 1;

//有1的情况
for(int i =0;i<nums.length;i++) {
if(nums[i]<=0)continue;

//去重
while(i+1<nums.length&&nums[i]==nums[i+1])i++;
//中间有不连续的
if(i+1<nums.length&&nums[i]+1!=nums[i+1]) {
return nums[i]+1;
}
}

return nums[nums.length-1]+1;
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×