VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 19。删除链表倒数第N个节点

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
# 这道题还是很简单的,我们只需要两遍的遍历,找到链表中倒数第n的前一个,
# 然后把n的前一个节点的next指向n的下一个节点,就可以了。
# 这里需要注意的是,如果链表的长度为1,我们好办了。
# 因此这里我们定义一个链表的节点,然后让他指向头结点。
# 这样我们就能实现删除第一个节点了。
class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        # 判断链表是否为空。根据题意,这个判断可以不写,
        # 因为题中说明了n是有效的数字
        if not head :return None
        # 定义一个节点,然后把它指向头结点。
        node = ListNode(0)
        node.next = head
        length = 0
        # 遍历出链表的长度。
        while head:
            length += 1
            head = head.next
        # 找到倒数第n各节点前边那个。
        node1 = node
        for i in range(length - n):
            node1 = node1.next
        # 然后把n删除。
        node1.next = node1.next.next
        return node.next

 

出处:https://www.cnblogs.com/cong12586/p/13836130.html



相关教程