-
Notifications
You must be signed in to change notification settings - Fork 138
/
Copy pathlc41.java
30 lines (30 loc) · 1010 Bytes
/
lc41.java
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
package code;
/*
* 41. First Missing Positive
* 题意:返回数组中最小的未出现的正整数
* 难度:Hard
* 分类:Array
* 思路:未出现的正整数一定在 [1~nums.length+1] 中,理解了这一点就好做了
* Tips:
*/
public class lc41 {
public static void main(String[] args) {
int[] nums = {1,1};
System.out.println(firstMissingPositive(nums));
}
public static int firstMissingPositive(int[] nums) {
for (int i = 0; i < nums.length ; i++) {
if(nums[i]>0&&nums[i]<=nums.length&&nums[nums[i]-1]!=nums[i]){ //第三个判断条件判断要交换的位置上是否已经就为了,防止重复元素死循环
int temp = nums[nums[i]-1];
nums[nums[i]-1] = nums[i];
nums[i] = temp;
i--;
}
}
for (int i = 0; i < nums.length ; i++) {
if(nums[i]!=i+1)
return i+1;
}
return nums.length+1;
}
}