1 问题
给你一个链表,删除链表的倒数第 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]
2 答案
这题直接不会
循环迭代文章来源:https://www.toymoban.com/news/detail-724690.html
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
dummy = ListNode(0)
dummy.next = head
#step1: 获取链表长度
cur, length = head, 0
while cur:
length += 1
cur = cur.next
#step2: 找到倒数第N个节点的前面一个节点
cur = dummy # cur 修改时 dummy 也会跟着一起修改,但next操作不会
for _ in range(length - n):
cur = cur.next
#step3: 删除节点,并重新连接
cur.next = cur.next.next
return dummy.next
3 问题
为什么用head
代替dummy
不行?
因为可能存在只有一个节点的列表,不能从head
开始,要从head
的前一个开始文章来源地址https://www.toymoban.com/news/detail-724690.html
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
dummy1 = ListNode(0)
dummy1.next = head
length = 0
dummy = head
while dummy:
length += 1
dummy = dummy.next
cur = head
for _ in range(length-n-1):
cur = cur.next
cur.next = cur.next.next
return dummy1.next
到了这里,关于【LeetCode】19. 删除链表的倒数第 N 个结点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!