Skip to content

Commit 0d64196

Browse files
authored
Merge pull request #132 from NovaHe/fix/19
fix/19: clean up code
2 parents 851946d + 5e77733 commit 0d64196

File tree

2 files changed

+18
-48
lines changed

2 files changed

+18
-48
lines changed

leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List.go

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,18 @@ type ListNode = structures.ListNode
1717

1818
// 解法一
1919
func removeNthFromEnd(head *ListNode, n int) *ListNode {
20-
if head == nil {
21-
return nil
22-
}
23-
var fast, slow *ListNode
24-
fast = head
25-
slow = head
26-
step := 0
27-
for i := 0; i < n; i++ {
28-
// n maybe much larger than length of linklist
29-
if fast.Next == nil && step < n-1 {
30-
return head
20+
dummyHead := &ListNode{Next: head}
21+
preSlow, slow, fast := dummyHead, head, head
22+
for fast != nil {
23+
if n <= 0 {
24+
preSlow = slow
25+
slow = slow.Next
3126
}
27+
n--
3228
fast = fast.Next
33-
step++
3429
}
35-
if fast == nil {
36-
head = head.Next
37-
return head
38-
}
39-
for fast.Next != nil {
40-
fast = fast.Next
41-
slow = slow.Next
42-
}
43-
slow.Next = slow.Next.Next
44-
return head
30+
preSlow.Next = slow.Next
31+
return dummyHead.Next
4532
}
4633

4734
// 解法二

website/content/ChapterFour/0001~0099/0019.Remove-Nth-Node-From-End-of-List.md

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Output: [1]
5252
## 代码
5353

5454
```go
55-
5655
package leetcode
5756

5857
import (
@@ -72,31 +71,18 @@ type ListNode = structures.ListNode
7271

7372
// 解法一
7473
func removeNthFromEnd(head *ListNode, n int) *ListNode {
75-
if head == nil {
76-
return nil
77-
}
78-
var fast, slow *ListNode
79-
fast = head
80-
slow = head
81-
step := 0
82-
for i := 0; i < n; i++ {
83-
// n maybe much larger than length of linklist
84-
if fast.Next == nil && step < n-1 {
85-
return head
74+
dummyHead := &ListNode{Next: head}
75+
preSlow, slow, fast := dummyHead, head, head
76+
for fast != nil {
77+
if n <= 0 {
78+
preSlow = slow
79+
slow = slow.Next
8680
}
81+
n--
8782
fast = fast.Next
88-
step++
89-
}
90-
if fast == nil {
91-
head = head.Next
92-
return head
9383
}
94-
for fast.Next != nil {
95-
fast = fast.Next
96-
slow = slow.Next
97-
}
98-
slow.Next = slow.Next.Next
99-
return head
84+
preSlow.Next = slow.Next
85+
return dummyHead.Next
10086
}
10187

10288
// 解法二
@@ -136,9 +122,6 @@ func removeNthFromEnd1(head *ListNode, n int) *ListNode {
136122
}
137123
return head
138124
}
139-
140-
141-
142125
```
143126

144127

0 commit comments

Comments
 (0)