Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b09da00

Browse files
committed
feat: update solutions to lc problem: No.0019
No.0019.Remove Nth Node From End of List
1 parent d6d52d8 commit b09da00

File tree

10 files changed

+140
-56
lines changed

10 files changed

+140
-56
lines changed

‎solution/0000-0099/0013.Roman to Integer/Solution.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
class Solution:
22
def romanToInt(self, s: str) -> int:
3-
romans = {'I': 1, 'V': 5, 'X': 10,
4-
'L': 50, 'C': 100, 'D': 500, 'M': 1000}
3+
romans = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
54
ans = 0
65
for i in range(len(s) - 1):
76
if romans[s[i]] < romans[s[i + 1]]:

‎solution/0000-0099/0019.Remove Nth Node From End of List/README.md‎

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@
5050

5151
<!-- 这里可写通用的实现逻辑 -->
5252

53-
利用快慢指针。
53+
**方法一:快慢指针**
54+
55+
定义两个指针 `fast``slow`,初始时都指向链表的虚拟头结点 `dummy`
56+
57+
接着 `fast` 指针先向前移动 $n$ 步,然后 `fast``slow` 指针同时向前移动,直到 `fast` 指针到达链表的末尾。此时 `slow.next` 指针指向的结点就是倒数第 `n` 个结点的前驱结点,将其删除即可。
58+
59+
时间复杂度 $O(n),ドル空间复杂度 $O(1)$。其中 $n$ 为链表的长度。
5460

5561
<!-- tabs:start -->
5662

@@ -65,7 +71,7 @@
6571
# self.val = val
6672
# self.next = next
6773
class Solution:
68-
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
74+
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
6975
dummy = ListNode(next=head)
7076
fast = slow = dummy
7177
for _ in range(n):
@@ -151,19 +157,16 @@ public:
151157
* }
152158
*/
153159
func removeNthFromEnd(head *ListNode, n int) *ListNode {
154-
dummy := &ListNode{0, head}
155-
fast := dummy
156-
slow := dummy
157-
for n > 0 {
158-
fast = fast.Next
159-
n -= 1
160-
}
161-
for fast.Next != nil {
162-
slow = slow.Next
163-
fast = fast.Next
164-
}
165-
slow.Next = slow.Next.Next
166-
return dummy.Next
160+
dummy := &ListNode{0, head}
161+
fast, slow := dummy, dummy
162+
for ; n > 0; n-- {
163+
fast = fast.Next
164+
}
165+
for fast.Next != nil {
166+
slow, fast = slow.Next, fast.Next
167+
}
168+
slow.Next = slow.Next.Next
169+
return dummy.Next
167170
}
168171
```
169172

@@ -265,6 +268,37 @@ impl Solution {
265268
}
266269
```
267270

271+
### **TypeScript**
272+
273+
```ts
274+
/**
275+
* Definition for singly-linked list.
276+
* class ListNode {
277+
* val: number
278+
* next: ListNode | null
279+
* constructor(val?: number, next?: ListNode | null) {
280+
* this.val = (val===undefined ? 0 : val)
281+
* this.next = (next===undefined ? null : next)
282+
* }
283+
* }
284+
*/
285+
286+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
287+
const dummy = new ListNode(0, head);
288+
let fast = dummy;
289+
let slow = dummy;
290+
while (n--) {
291+
fast = fast.next;
292+
}
293+
while (fast.next) {
294+
slow = slow.next;
295+
fast = fast.next;
296+
}
297+
slow.next = slow.next.next;
298+
return dummy.next;
299+
}
300+
```
301+
268302
### **...**
269303

270304
```

‎solution/0000-0099/0019.Remove Nth Node From End of List/README_EN.md‎

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
# self.val = val
5555
# self.next = next
5656
class Solution:
57-
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
57+
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
5858
dummy = ListNode(next=head)
5959
fast = slow = dummy
6060
for _ in range(n):
@@ -138,19 +138,16 @@ public:
138138
* }
139139
*/
140140
func removeNthFromEnd(head *ListNode, n int) *ListNode {
141-
dummy := &ListNode{0, head}
142-
fast := dummy
143-
slow := dummy
144-
for n > 0 {
145-
fast = fast.Next
146-
n -= 1
147-
}
148-
for fast.Next != nil {
149-
slow = slow.Next
150-
fast = fast.Next
151-
}
152-
slow.Next = slow.Next.Next
153-
return dummy.Next
141+
dummy := &ListNode{0, head}
142+
fast, slow := dummy, dummy
143+
for ; n > 0; n-- {
144+
fast = fast.Next
145+
}
146+
for fast.Next != nil {
147+
slow, fast = slow.Next, fast.Next
148+
}
149+
slow.Next = slow.Next.Next
150+
return dummy.Next
154151
}
155152
```
156153

@@ -252,6 +249,37 @@ impl Solution {
252249
}
253250
```
254251

252+
### **TypeScript**
253+
254+
```ts
255+
/**
256+
* Definition for singly-linked list.
257+
* class ListNode {
258+
* val: number
259+
* next: ListNode | null
260+
* constructor(val?: number, next?: ListNode | null) {
261+
* this.val = (val===undefined ? 0 : val)
262+
* this.next = (next===undefined ? null : next)
263+
* }
264+
* }
265+
*/
266+
267+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
268+
const dummy = new ListNode(0, head);
269+
let fast = dummy;
270+
let slow = dummy;
271+
while (n--) {
272+
fast = fast.next;
273+
}
274+
while (fast.next) {
275+
slow = slow.next;
276+
fast = fast.next;
277+
}
278+
slow.next = slow.next.next;
279+
return dummy.next;
280+
}
281+
```
282+
255283
### **...**
256284

257285
```

‎solution/0000-0099/0019.Remove Nth Node From End of List/Solution.go‎

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,15 @@
55
* Next *ListNode
66
* }
77
*/
8-
func removeNthFromEnd(head *ListNode, n int) *ListNode {
9-
dummy := &ListNode{0, head}
10-
fast := dummy
11-
slow := dummy
12-
for n > 0 {
13-
fast = fast.Next
14-
n -= 1
15-
}
16-
for fast.Next != nil {
17-
slow = slow.Next
18-
fast = fast.Next
19-
}
20-
slow.Next = slow.Next.Next
21-
return dummy.Next
8+
func removeNthFromEnd(head *ListNode, n int) *ListNode {
9+
dummy := &ListNode{0, head}
10+
fast, slow := dummy, dummy
11+
for ; n > 0; n-- {
12+
fast = fast.Next
13+
}
14+
for fast.Next != nil {
15+
slow, fast = slow.Next, fast.Next
16+
}
17+
slow.Next = slow.Next.Next
18+
return dummy.Next
2219
}

‎solution/0000-0099/0019.Remove Nth Node From End of List/Solution.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# self.val = val
55
# self.next = next
66
class Solution:
7-
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
7+
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
88
dummy = ListNode(next=head)
99
fast = slow = dummy
1010
for _ in range(n):
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* class ListNode {
4+
* val: number
5+
* next: ListNode | null
6+
* constructor(val?: number, next?: ListNode | null) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.next = (next===undefined ? null : next)
9+
* }
10+
* }
11+
*/
12+
13+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
14+
const dummy = new ListNode(0, head);
15+
let fast = dummy;
16+
let slow = dummy;
17+
while (n--) {
18+
fast = fast.next;
19+
}
20+
while (fast.next) {
21+
slow = slow.next;
22+
fast = fast.next;
23+
}
24+
slow.next = slow.next.next;
25+
return dummy.next;
26+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Solution:
22
def strStr(self, haystack: str, needle: str) -> int:
33
n, m = len(haystack), len(needle)
4-
for i in range(n-m+1):
5-
if haystack[i:i+m] == needle:
4+
for i in range(n-m+1):
5+
if haystack[i : i+m] == needle:
66
return i
77
return -1

‎solution/CONTEST_README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
| 段位 | 比例 | 段位名 | 国服分数线 | 勋章 |
1313
| ----- | ------ | -------- | --------- | --------------------------------------------------------------------------- |
14-
| LV3 | 5% | Guardian | &ge;2234.22 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
15-
| LV2 | 20% | Knight | &ge;1875.44 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
14+
| LV3 | 5% | Guardian | &ge;2235.51 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
15+
| LV2 | 20% | Knight | &ge;1875.65 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
1616
| LV1 | 75% | - | - | - |
1717

1818
力扣竞赛 **全国排名前 10** 的用户,全站用户名展示为品牌橙色。

‎solution/CONTEST_README_EN.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ If you are in the top 25% of the contest rating, you’ll get the "Knight" b
1313

1414
| Level | Proportion | Badge | Rating | |
1515
| ----- | ---------- | ---------- | -------------- | ----------------------------------------------------------------------------------------------------------------------- |
16-
| LV3 | 5\% | Guardian | &ge;2184.20 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
17-
| LV2 | 20\% | Knight | &ge;1849.64 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
16+
| LV3 | 5\% | Guardian | &ge;2177.33 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
17+
| LV2 | 20\% | Knight | &ge;1850.13 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
1818
| LV1 | 75\% | - | - | - |
1919

2020
For top 10 users (excluding LCCN users), your LeetCode ID will be colored orange on the ranking board. You'll also have the honor with you when you post/comment under discuss.

‎solution/contest.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ def generate_contest_list():
127127
128128
| 段位 | 比例 | 段位名 | 国服分数线 | 勋章 |
129129
| ----- | ------ | -------- | --------- | --------------------------------------------------------------------------- |
130-
| LV3 | 5% | Guardian | &ge;2234.22 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
131-
| LV2 | 20% | Knight | &ge;1875.44 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
130+
| LV3 | 5% | Guardian | &ge;2235.51 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
131+
| LV2 | 20% | Knight | &ge;1875.65 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
132132
| LV1 | 75% | - | - | - |
133133
134134
力扣竞赛 **全国排名前 10** 的用户,全站用户名展示为品牌橙色。
@@ -154,8 +154,8 @@ def generate_contest_list():
154154
155155
| Level | Proportion | Badge | Rating | |
156156
| ----- | ---------- | ---------- | -------------- | ----------------------------------------------------------------------------------------------------------------------- |
157-
| LV3 | 5\% | Guardian | &ge;2184.20 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
158-
| LV2 | 20\% | Knight | &ge;1849.64 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
157+
| LV3 | 5\% | Guardian | &ge;2177.33 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Guardian.gif" style="width: 80px;" /></p> |
158+
| LV2 | 20\% | Knight | &ge;1850.13 | <p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/images/Knight.gif" style="width: 80px;" /></p> |
159159
| LV1 | 75\% | - | - | - |
160160
161161
For top 10 users (excluding LCCN users), your LeetCode ID will be colored orange on the ranking board. You'll also have the honor with you when you post/comment under discuss.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /