题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param n int整型
# @return ListNode类
#
class Solution:
def removeNthFromEnd(self , head: ListNode, n: int) -> ListNode:
# write code here
if not head:
return None
pre = ListNode(0)
pre.next = head #涉及节点删除,记录前一个节点
pre2 = pre
slow = fast = head #同样使用快慢指针
while fast and n >0:
fast = fast.next
n -= 1
if n>0: return None
while fast:
fast = fast.next
slow = slow.next
pre = pre.next
pre.next = slow.next
return pre2.next #不使用head返回,防止单节点被直接删除的情况