python3删除链表倒数的第n个节点
删除链表的倒数第n个节点
https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6?tpId=188&tags=&title=&diffculty=0&judgeStatus=0&rp=1
分如下两种情况:
1 n=0(链表为空)或n=1(链表只有一个元素),直接返回None
2 常规情况,两个游标,一个游标first_cur先走n步,然后两个游标first_cur/last_cur一起移动。需要注意当n=链表的长度时,即需要删除头节点时的情况。
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param head ListNode类 # @param n int整型 # @return ListNode类 # class Solution: def removeNthFromEnd(self , head , n ): #0 or 1 cur = head.next if head else head if not cur: return None first_cur=head last_cur=head while first_cur.next: first_cur = first_cur.next if n<=0: last_cur = last_cur.next else: n-=1 if n>0:head = head.next#n=链表长度,即要删除头节点的情况 else:last_cur.next = last_cur.next.next return head