给定一个链表,删除倒数第n个节点,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 not head:
return
first = head
second = head
size = 0
while first.next:
first = first.next
size += 1
if size > n:
second = second.next
if size + 1 == n: #删除链表节点时,总是指向前驱节点,所以此处 size要 加1后判断
return head.next
else:
second.next = second.next.next
return head注:
当n值 等于 链表节点数时,直接将头节点删去