题目:
给你一个链表,删除链表的倒数第
n
个结点,并且返回链表的头结点。示例 1:
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2:
输入:head = [1], n = 1 输出:[]示例 3:
输入:head = [1,2], n = 1 输出:[1]
解题思路;
首先定义一个指针p指向链表头部,然后使x,y指针成为链表头节点。x代表快指针,y代表慢指针,先使x指针移动n位,然后再同时移动x,y指针直至x指针移到尾部,此时y指针指向要删除节点的前一个节点。最后删除对应的节点并返回更新后的链表。
程序代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
p=ListNode(0)
p.next=head
x=y=p
for i in range(n):
x=x.next
while x.next:
x=x.next
y=y.next
y.next=y.next.next
return p.next
运行结果: