Skip to content

Commit d34ba39

Browse files
committed
二刷268
1 parent 3bbd3d5 commit d34ba39

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed

Diff for: docs/0268-missing-number.adoc

+23
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,32 @@ Given an array containing _n_ distinct numbers taken from `0, 1, 2, ..., n`, fin
2929
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
3030

3131

32+
== 思路分析
33+
3234
[[src-0268]]
35+
[tabs]
36+
====
37+
一刷::
38+
+
39+
--
3340
[{java_src_attr}]
3441
----
3542
include::{sourcedir}/_0268_MissingNumber.java[tag=answer]
3643
----
44+
--
45+
46+
二刷::
47+
+
48+
--
49+
[{java_src_attr}]
50+
----
51+
include::{sourcedir}/_0268_MissingNumber_2.java[tag=answer]
52+
----
53+
--
54+
====
55+
56+
== 参考资料
57+
58+
. https://leetcode.cn/problems/missing-number/solutions/1085105/diu-shi-de-shu-zi-by-leetcode-solution-naow/[268. 丢失的数字 - 官方题解^]
59+
. https://leetcode.cn/problems/missing-number/solutions/1086545/gong-shui-san-xie-yi-ti-wu-jie-pai-xu-ji-te3s/[268. 丢失的数字 - 一题五解 :「排序」&「计数」&「原地哈希」&「数学」&「异或」^]
3760

Diff for: logbook/202406.adoc

+5
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,11 @@
419419
|{doc_base_url}/0041-first-missing-positive.adoc[题解]
420420
|循环排序,思路有意思!
421421

422+
|{counter:codes}
423+
|{leetcode_base_url}/missing-number/[268. Missing Number^]
424+
|{doc_base_url}/0268-missing-number.adoc[题解]
425+
|循环排序
426+
422427
|===
423428

424429
截止目前,本轮练习一共完成 {codes} 道题。

Diff for: src/main/java/com/diguage/algo/leetcode/_0268_MissingNumber.java

+3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ public class _0268_MissingNumber {
3939
* Memory Usage: 38.9 MB, less than 100.00% of Java online submissions for Missing Number.
4040
*
4141
* Copy from: https://leetcode.com/problems/missing-number/solution/[Missing Number solution - LeetCode]
42+
*
43+
* @author D瓜哥 · https://www.diguage.com
44+
* @since 2020-01-05 21:30
4245
*/
4346
public int missingNumber(int[] nums) {
4447
int actualSum = 0;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.diguage.algo.leetcode;
2+
3+
4+
public class _0268_MissingNumber_2 {
5+
// tag::answer[]
6+
7+
/**
8+
* 循环排序的解法
9+
*
10+
* @author D瓜哥 · https://www.diguage.com
11+
* @since 2024-08-29 19:07:11
12+
*/
13+
public int missingNumber(int[] nums) {
14+
int n = nums.length;
15+
for (int i = 0; i < n; i++) {
16+
if (nums[i] != i && nums[i] < n) {
17+
swap(nums, nums[i], i--);
18+
}
19+
}
20+
for (int i = 0; i < n; i++) {
21+
if (nums[i] != i) {
22+
return i;
23+
}
24+
}
25+
return n;
26+
}
27+
28+
private void swap(int[] nums, int i, int j) {
29+
int temp = nums[i];
30+
nums[i] = nums[j];
31+
nums[j] = temp;
32+
}
33+
34+
// end::answer[]
35+
public static void main(String[] args) {
36+
new _0268_MissingNumber_2().missingNumber(new int[]{1});
37+
}
38+
}

0 commit comments

Comments
 (0)