给你一个链表,删除链表的倒数第 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]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
My_CODE:
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclassSolution:defremoveNthFromEnd(self, head: ListNode, n:int)-> ListNode:
re = head
len=0
pre =Nonewhile re:len+=1
re = re.next
re = head
index =len- n
for _ inrange(index):
pre = re
re = re.nextifnot pre:
head = re.nextelse:
pre.next= re.nextreturn head
进阶:你能尝试使用一趟扫描实现吗?
Other:
a = head
b = head
for i inrange(n):if a.next:
a = a.nextelse:return head.nextwhile a.next:
a = a.next
b = b.next
b.next= b.next.nextreturn head