美文网首页
19. 删除链表的倒数第 N 个结点(中等)-链表

19. 删除链表的倒数第 N 个结点(中等)-链表

作者: MatrixZ | 来源:发表于2023-05-24 09:38 被阅读0次

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

分析

  • 倒数不好计算,那就转成正数
  • 注意要加一个dummy的node,作为head之前的一个,这样也好删除第一个节点
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:

        # 倒数第n个节点,就是正数N-n + 1个节点
        dummy = ListNode()
        length = 0
        cur = head
        while cur:
            length += 1
            cur = cur.next
        
        target_len = length - n + 1
        cur = head
        dummy.next = cur
        prev = dummy
        i = 1
        while cur:
            if i == target_len:
                next = cur.next
                prev.next = next

                break
            i += 1
            prev = prev.next
            cur = cur.next
            
        
        return dummy.next

相关文章

网友评论

      本文标题:19. 删除链表的倒数第 N 个结点(中等)-链表

      本文链接:https://www.haomeiwen.com/subject/admfedtx.html