Skip to content

Commit 1eb2df1

Browse files
committed
一刷203
1 parent bf117e9 commit 1eb2df1

File tree

7 files changed

+130
-47
lines changed

7 files changed

+130
-47
lines changed

README.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,12 +1447,12 @@ TIP: **公众号的微信号是: `jikerizhi`**。__因为众所周知的原因
14471447
|Easy
14481448
|
14491449

1450-
//|{counter:codes}
1451-
//|{leetcode_base_url}/remove-linked-list-elements/[203. Remove Linked List Elements^]
1452-
//|{source_base_url}/_0203_RemoveLinkedListElements.java[Java]
1453-
//|{doc_base_url}/0203-remove-linked-list-elements.adoc[题解]
1454-
//|Easy
1455-
//|
1450+
|{counter:codes}
1451+
|{leetcode_base_url}/remove-linked-list-elements/[203. Remove Linked List Elements^]
1452+
|{source_base_url}/_0203_RemoveLinkedListElements.java[Java]
1453+
|{doc_base_url}/0203-remove-linked-list-elements.adoc[题解]
1454+
|Easy
1455+
|
14561456

14571457
|{counter:codes}
14581458
|{leetcode_base_url}/count-primes/[204. Count Primes^]
Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,67 @@
11
[#0203-remove-linked-list-elements]
2-
= 203. Remove Linked List Elements
2+
= 203. 移除链表元素
33

4-
{leetcode}/problems/remove-linked-list-elements/[LeetCode - Remove Linked List Elements^]
4+
https://leetcode.cn/problems/remove-linked-list-elements/[LeetCode - 203. 移除链表元素 ^]
55

6-
Remove all elements from a linked list of integers that have value *_val_*.
6+
给你一个链表的头节点 `head` 和一个整数 `val`,请你删除链表中所有满足 `Node.val == val` 的节点,并返回 *新的头节点*
77

8-
*Example:*
8+
*示例 1:*
99

10-
[subs="verbatim,quotes,macros"]
11-
----
12-
*Input:* 1->2->6->3->4->5->6, _*val*_ = 6
13-
*Output:* 1->2->3->4->5
14-
----
10+
image::images/0203-01.jpg[{image_attr}]
11+
12+
....
13+
输入:head = [1,2,6,3,4,5,6], val = 6
14+
输出:[1,2,3,4,5]
15+
....
16+
17+
*示例 2:*
18+
19+
....
20+
输入:head = [], val = 1
21+
输出:[]
22+
....
23+
24+
*示例 3:*
25+
26+
....
27+
输入:head = [7,7,7,7], val = 7
28+
输出:[]
29+
....
1530

31+
*提示:*
1632

33+
* 列表中的节点数目在范围 `[0, 10^4^]`
34+
* `+1 <= Node.val <= 50+`
35+
* `+0 <= val <= 50+`
36+
37+
38+
== 思路分析
39+
40+
没想到递归解法更简单!
1741

1842
[[src-0203]]
43+
[tabs]
44+
====
45+
一刷::
46+
+
47+
--
1948
[{java_src_attr}]
2049
----
2150
include::{sourcedir}/_0203_RemoveLinkedListElements.java[tag=answer]
2251
----
52+
--
53+
54+
// 二刷::
55+
// +
56+
// --
57+
// [{java_src_attr}]
58+
// ----
59+
// include::{sourcedir}/_0203_RemoveLinkedListElements_2.java[tag=answer]
60+
// ----
61+
// --
62+
====
63+
64+
65+
== 参考资料
2366

67+
. https://leetcode.cn/problems/remove-linked-list-elements/solutions/813358/yi-chu-lian-biao-yuan-su-by-leetcode-sol-654m/[203. 移除链表元素 - 官方题解^] -- 递归解法真简单!

docs/images/0203-01.jpg

22.9 KB
Loading

docs/index.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ include::0200-number-of-islands.adoc[leveloffset=+1]
488488

489489
include::0202-happy-number.adoc[leveloffset=+1]
490490

491-
// include::0203-remove-linked-list-elements.adoc[leveloffset=+1]
491+
include::0203-remove-linked-list-elements.adoc[leveloffset=+1]
492492

493493
include::0204-count-primes.adoc[leveloffset=+1]
494494

logbook/202503.adoc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -379,20 +379,25 @@ endif::[]
379379
|✅ 动态规划。思考如何进一步优化成一维数组?
380380

381381
|{counter:codes2503}
382-
|{leetcode_base_url}/maximum-width-of-binary-tree/[662. Maximum Width of Binary Tree^]
382+
|{leetcode_base_url}/maximum-width-of-binary-tree/[662. 二叉树最大宽度^]
383383
|{doc_base_url}/0662-maximum-width-of-binary-tree.adoc[题解]
384384
|⭕️ 添加虚拟节点的做法超时。看答案给节点加编号通过。
385385

386-
|{counter:codes}
387-
|{leetcode_base_url}/next-permutation/[31. Next Permutation^]
386+
|{counter:codes2503}
387+
|{leetcode_base_url}/next-permutation/[31. 下一个排列^]
388388
|{doc_base_url}/0031-next-permutation.adoc[题解]
389389
|❌ 明白大概意思,思路不够条理,写不出代码。
390390

391-
|{counter:codes}
392-
|{leetcode_base_url}/rotate-array/[189. Rotate Array^]
391+
|{counter:codes2503}
392+
|{leetcode_base_url}/rotate-array/[189. 轮转数组^]
393393
|{doc_base_url}/0189-rotate-array.adoc[题解]
394394
|❌ 题目理解错误,是轮转数组,不是旋转数组。
395395

396+
|{counter:codes2503}
397+
|{leetcode_base_url}/remove-linked-list-elements/[203. 移除链表元素^]
398+
|{doc_base_url}/0203-remove-linked-list-elements.adoc[题解]
399+
|✅ 快慢指针。看答案,一个指针也可以!而且代码更简单!
400+
396401
|===
397402

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

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

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,32 @@
22

33
public class _0202_HappyNumber_2 {
44
// tag::answer[]
5+
/**
6+
* @author D瓜哥 · https://www.diguage.com
7+
* @since 2025-03-06 21:56
8+
*/
9+
public boolean isHappy(int n) {
10+
int slow = n, fast = n;
11+
do {
12+
slow = squareSum(slow);
13+
fast = squareSum(fast);
14+
fast = squareSum(fast);
15+
if (fast == 1) {
16+
return true;
17+
}
18+
} while (slow != fast);
519

6-
/**
7-
* @author D瓜哥 · https://www.diguage.com
8-
* @since 2020-01-10 21:40
9-
*/
10-
public boolean isHappy(int n) {
11-
int slow = n, fast = n;
12-
do {
13-
slow = squareSum(slow);
14-
fast = squareSum(fast);
15-
fast = squareSum(fast);
16-
if (fast == 1) {
17-
return true;
18-
}
19-
} while (slow != fast);
20-
21-
return false;
22-
}
20+
return false;
21+
}
2322

24-
private int squareSum(int num) {
25-
int sum = 0;
26-
while (num > 0) {
27-
int n = num % 10;
28-
sum += n * n;
29-
num /= 10;
23+
private int squareSum(int num) {
24+
int sum = 0;
25+
while (num > 0) {
26+
int n = num % 10;
27+
sum += n * n;
28+
num /= 10;
29+
}
30+
return sum;
3031
}
31-
return sum;
32-
}
33-
// end::answer[]
32+
// end::answer[]
3433
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.diguage.algo.leetcode;
2+
3+
import com.diguage.algo.util.ListNode;
4+
import com.diguage.util.ListNodes;
5+
6+
import java.util.List;
7+
8+
public class _0203_RemoveLinkedListElements {
9+
// tag::answer[]
10+
/**
11+
* @author D瓜哥 · https://www.diguage.com
12+
* @since 2025-04-21 16:53:21
13+
*/
14+
public ListNode removeElements(ListNode head, int val) {
15+
ListNode dummy = new ListNode(-1);
16+
dummy.next = head;
17+
ListNode slow = dummy;
18+
ListNode fast = head;
19+
while (fast != null) {
20+
if (fast.val == val) {
21+
slow.next = fast.next;
22+
} else {
23+
slow = slow.next;
24+
}
25+
fast = fast.next;
26+
}
27+
slow.next = null;
28+
return dummy.next;
29+
}
30+
// end::answer[]
31+
public static void main(String[] args) {
32+
new _0203_RemoveLinkedListElements()
33+
.removeElements(ListNodes.build(List.of(1, 2, 6, 3, 4, 5, 6)), 6);
34+
}
35+
}

0 commit comments

Comments
 (0)