248 字
1 分钟
LeetCode-19.删除链表的倒数第 N 个结点
链表
给你一个链表,删除链表的倒数第
n个结点,并且返回链表的头结点
示例 1:
输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:
输入:head = [1], n = 1输出:[]示例 3:
输入:head = [1,2], n = 1输出:[1]
自己的解法
手撕,一遍过,哈哈哈!不妄我失败了这么多次链表,虽然比较简单就是了
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func removeNthFromEnd(head *ListNode, n int) *ListNode { dummy := &ListNode{Next: head}
cur := dummy.Next count := 1 for cur != nil { cur = cur.Next count++ }
need := count - n - 1 cur = dummy for i := 0; i < need; i++ { cur = cur.Next }
if cur.Next != nil { cur.Next = cur.Next.Next }
return dummy.Next}双指针
func removeNthFromEnd(head *ListNode, n int) *ListNode { dummyNode := &ListNode{0, head} fast, slow := dummyNode, dummyNode
for i := 0; i <= n; i++ { fast = fast.Next }
for fast != nil { fast = fast.Next slow = slow.Next } slow.Next = slow.Next.Next
return dummyNode.Next} LeetCode-19.删除链表的倒数第 N 个结点
https://sheep44044.github.io/posts/算法/链表/leetcode-19删除链表的倒数第-n-个结点/
