題目
給定一個鏈表毡证,刪除鏈表的倒數(shù)第 n 個節(jié)點蔫仙,并且返回鏈表的頭結(jié)點。
示例:
給定一個鏈表: 1->2->3->4->5, 和 n = 2.
當(dāng)刪除了倒數(shù)第二個節(jié)點后恤煞,鏈表變?yōu)?1->2->3->5.
說明:
給定的 n 保證是有效的施籍。
進(jìn)階:
你能嘗試使用一趟掃描實現(xiàn)嗎?
解題思路
雙指針
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
if head.next == None: return None
deleteIndex = n
deleteNode: ListNode = head
rightNode = head
#right先走一段
while deleteIndex > 0:
deleteIndex -= 1
rightNode = rightNode.next
if rightNode == None:#刪除第一個節(jié)點
head = head.next
return head;
while rightNode.next != None:
rightNode = rightNode.next
deleteNode = deleteNode.next
if n == 1:#刪除最后一個節(jié)點
deleteNode.next = None
else:
deleteNode.next = deleteNode.next.next
return head