leetcode-19 删除链表倒数第N个节点
2021-05-15 本文已影响0人
秸秆混凝烧结工程师
题目:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
解释:# 给你一个链表,删除链表的倒数第 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]
------------------------------------------AC---------------------------------------
解答
Definition for singly-linked list.
class ListNode:
def init(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
#虚拟一个头节点
dum =ListNode(0)
dum.next =head
cur,length =head,0
#拿到链表的长度lenght( 注意循环其实位置是head 还是 dum)
while cur:
length+=1
cur=cur.next
#指针指向头部
cur =dum
for _ in range(length -n):
cur = cur.next
#待删除元素的前一个节点的next指向要删除元素的下一个元素
cur.next = cur.next.next
return dum.next
AC结论:
执行结果:通过
显示详情:
添加备注:
执行用时:40 ms, 在所有 Python3 提交中击败了74.51%的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了32.62%的用户
总体可行,需要提高