链表倒数第k个节点_19. 删除链表的倒数第N个节点

19. 删除链表的倒数第N个节点

题目

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?

题解

一看这题面,一次遍历,我直接掏出两个指针,一个用来记录终点,一个用来找到目标节点位置.a44e820ad158380e0da078fe719bdc20.png

另有两种情况需要额外处理下

1.节点数为1的情况,这种情况需要返回空节点2.需要删除的节点为头结点的情况,这种情况需要返回头结点的下一个节点 贴下代码:

# Definition for singly-linked list.class ListNode:    def __init__(self, val=0, next=None):        self.val = val        self.next = nextdef removeNthFromEnd(head: ListNode, n: int) -> ListNode:    if head.next == None:        return None    target_node = head    tail_node = head    index = 0    while tail_node.next != None:        index += 1        if index > n:            target_node = target_node.next        tail_node = tail_node.next    if index == n:        head = head.next    target_node.next = target_node.next.next    return head

Python学到了

今天python没学到什么

Tough Life

想得到的东西得不到就够痛苦了,老是得不到就更痛苦了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值