本文主要是介绍Leetcode19. 删除链表的倒数第N个节点-python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
难度:中等
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
思路:最简单的一种方法就是,遍历两次,第一次计算链表长度L,然后第二次遍历删除L-n个结点即可。
进阶思路:利用递归即可一次遍历实现,返回时利用全局变量x记录返回层数,当x==n时,返回值为下一个结点即可完成删除操作。
进阶思路代码如下:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""#全局变量记录global x#结束条件if head is None:x=0return None#递归head.next=self.removeNthFromEnd(head.next,n)x+=1#递归法不需要删除,只需要把该结点跳过去即可if n==x:return head.nextreturn head
这篇关于Leetcode19. 删除链表的倒数第N个节点-python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!