题目
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明
给定的 n 保证是有效的。
思路
代码
pyhton
# 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:
p = head
# 记录链表总长度
num = 0
temp1 = head
while (head != None):
num += 1
head = head.next
head = temp1
temp = num - n + 1 # 需要删除的元素在链表里的位置
flag = temp
while (temp > 0):
temp -= 1
if temp != 1:
p = p.next
else:
p.next = p.next.next
# flag = 1表示链表长度为1,直接为空
if flag == 1:
head = p
return head
执行结果:通过
执行用时:44 ms, 在所有 Python3 提交中击败了59.93% 的用户
内存消耗:13.4 MB, 在所有 Python3 提交中击败了5.41% 的用户
进阶:
你能尝试使用一趟扫描实现吗?
有空再做