19. 删除链表的倒数第 N 个结点
- 题目-中等难度
- 示例
- 1. 统计节点数+删除节点
题目-中等难度
给你一个链表,删除链表的倒数第 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]
提示:
- 链表中结点的数目为 sz
- 1 <= sz <= 30
- 0 <= Node.val <= 100
- 1 <= n <= sz
进阶:
你能尝试使用一趟扫描实现吗?
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1. 统计节点数+删除节点
时间
16ms
击败 85.15%使用 Python 的用户
内存
12.48mb
击败 95.90%使用 Python 的用户
# 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 = headi = 0while p:i +=1p = p.next# 给链表添加头节点方便便利,然后遍历到当前节点n1 = ListNode(-1)n1.next = headcur = n1for i in range(i-n):cur = cur.next# # 1.# # 删除节点的上一项直接指向删除节点的下一项# cur.next = cur.next.next# 2.# 获取要删除节点v = cur.next# 获取要删除节点的后续节点t = v.next# 拼接节点cur.next = treturn n1.next