优化 19. 删除链表的倒数第 N 个结点 go 代码

This commit is contained in:
lavaicer
2024-03-02 01:31:30 +00:00
parent 3bc9d8eb56
commit a1e8af39a8

View File

@ -165,20 +165,17 @@ class Solution:
* } * }
*/ */
func removeNthFromEnd(head *ListNode, n int) *ListNode { func removeNthFromEnd(head *ListNode, n int) *ListNode {
dummyHead := &ListNode{} dummyNode := &ListNode{0, head}
dummyHead.Next = head fast, slow := dummyNode, dummyNode
cur := head for i := 0; i <= n; i++ { // 注意<=否则快指针为空时慢指针正好在倒数第n个上面
prev := dummyHead fast = fast.Next
i := 1
for cur != nil {
cur = cur.Next
if i > n {
prev = prev.Next
} }
i++ for fast != nil {
fast = fast.Next
slow = slow.Next
} }
prev.Next = prev.Next.Next slow.Next = slow.Next.Next
return dummyHead.Next return dummyNode.Next
} }
``` ```