Skip to content

Commit 2111336

Browse files
committed
四刷41
1 parent 36eeb4b commit 2111336

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

docs/0041-first-missing-positive.adoc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[#0041-first-missing-positive]
22
= 41. 缺失的第一个正数
33

4-
{leetcode}/problems/first-missing-positive/[LeetCode - First Missing Positive^]
4+
https://leetcode.cn/problems/first-missing-positive/[LeetCode - 41. 缺失的第一个正数^]
55

66
给你一个未排序的整数数组 `nums` ,请你找出其中没有出现的最小的正整数。
77

@@ -42,12 +42,12 @@
4242
4343
== 思路分析
4444

45-
这道题跟 {leetcode}/problems/missing-number/[268. Missing Number - LeetCode^] 很像!
46-
47-
45+
这道题跟 xref:0268-missing-number.adoc[268. Missing Number] 很像!
4846

4947
image::images/0041-01.png[{image_attr}]
5048

49+
image::images/0041-10.png[{image_attr}]
50+
5151
[[src-0041]]
5252
[tabs]
5353
====
@@ -77,10 +77,20 @@ include::{sourcedir}/_0041_FirstMissingPositive_2.java[tag=answer]
7777
include::{sourcedir}/_0041_FirstMissingPositive_3.java[tag=answer]
7878
----
7979
--
80+
81+
四刷::
82+
+
83+
--
84+
[{java_src_attr}]
85+
----
86+
include::{sourcedir}/_0041_FirstMissingPositive_4.java[tag=answer]
87+
----
88+
--
8089
====
8190

8291

8392
== 参考资料
8493

8594
. https://leetcode.cn/problems/first-missing-positive/solutions/304743/que-shi-de-di-yi-ge-zheng-shu-by-leetcode-solution/[41. 缺失的第一个正数 - 官方题解^]
8695
. https://leetcode.cn/problems/first-missing-positive/solutions/7703/tong-pai-xu-python-dai-ma-by-liweiwei1419/[41. 缺失的第一个正数 - 原地哈希(哈希函数为:f(nums[i\]) = nums[i\] - 1)^]
96+
. https://leetcode.cn/problems/first-missing-positive/solutions/3655377/huan-zuo-wei-tong-guo-li-zi-li-jie-suan-qa94e/[41. 缺失的第一个正数 - O(n) 换座位,通过例子理解算法思想^]

docs/images/0041-10.png

162 KB
Loading

logbook/202503.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,6 +1529,11 @@ endif::[]
15291529
|{doc_base_url}/0215-kth-largest-element-in-an-array.adoc[题解]
15301530
|⭕️ 快速选择。有思路,但代码总报错!还需要多练!
15311531

1532+
|{counter:codes2503}
1533+
|{leetcode_base_url}/first-missing-positive/[41. 缺失的第一个正数^]
1534+
|{doc_base_url}/0041-first-missing-positive.adoc[题解]
1535+
|✅ 循环排序。
1536+
15321537
|===
15331538

15341539
截止目前,本轮练习一共完成 {codes2503} 道题。
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.diguage.algo.leetcode;
2+
3+
public class _0041_FirstMissingPositive_4 {
4+
// tag::answer[]
5+
6+
/**
7+
* @author D瓜哥 · https://www.diguage.com
8+
* @since 2025-09-14 22:15:15
9+
*/
10+
public int firstMissingPositive(int[] nums) {
11+
int length = nums.length;
12+
for (int i = 0; i < length; i++) {
13+
while (nums[i] > 0 && nums[i] < length && nums[i] != i + 1) {
14+
int num = nums[i];
15+
if (nums[num - 1] == num) {
16+
break;
17+
}
18+
nums[i] = nums[num - 1];
19+
nums[num - 1] = num;
20+
}
21+
}
22+
for (int i = 0; i < length; i++) {
23+
if (nums[i] != i + 1) {
24+
return i + 1;
25+
}
26+
}
27+
return length + 1;
28+
}
29+
// end::answer[]
30+
}

src/main/java/com/diguage/algo/leetcode/_0215_KthLargestElementInAnArray_6.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public class _0215_KthLargestElementInAnArray_6 {
55

66
/**
77
* @author D瓜哥 · https://www.diguage.com
8-
* @since 2025-04-30 07:16:18
8+
* @since 2025-09-13 22:15:50
99
*/
1010
public int findKthLargest(int[] nums, int k) {
1111
return quickselect(nums, 0, nums.length - 1, nums.length - k);

0 commit comments

Comments
 (0)