1 题目描述

2 解题思路

2.1 哨兵节点+链表长度

设置一个哨兵节点,然后我们判断链表的长度。

接着我们求出需要被删除的那一个节点的前一个结点,令它的next等于我们要被删除的节点的next节点,即自己的next.next

class Solution(object):def removeNthFromEnd(self, head, n):""":type head: ListNode:type n: int:rtype: ListNode"""t=ListNode(0)t.next=headtmp=tN=1while(tmp.next!=None):N+=1tmp=tmp.nexttmp2=tfor i in range(N-n-1):tmp2=tmp2.nextprint(tmp2)tmp2.next=tmp2.next.nextreturn(t.next)

2.2 哨兵节点+双指针

设立双指针,fast比slow领先n位的话,我们可以找到要被删除的节点(即倒数第n个节点);fast比slow领先n+1位的话,可以找到要被删除的节点的前一位节点,让它的next等于被删除的节点的next节点,即自己的next.next

# 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"""t=ListNode(0)t.next=headfast=t.nextslow=tfor i in range(n):fast=fast.nextwhile(fast!=None):fast=fast.nextslow=slow.nextslow.next=slow.next.nextreturn(t.next)

2.3 哨兵节点+栈

设立哨兵节点,然后将每一个链表的节点入栈,全部入栈后,弹出至倒数第n+1个节点,他就是我们要被删除的节点的前一个

# 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"""t=ListNode(0)t.next=headlst=[]tmp=t#(tmp)while(t!=None):lst.append(t)t=t.nextx=lst[-n-1]print(x)x.next=x.next.nextreturn(tmp.next)

文巾解题 19. 删除链表的倒数第 N 个结点相关推荐

  1. LeetCode-链表-19. 删除链表的倒数第 N 个结点

    描述: 19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4, ...

  2. LeetCode Algorithm 19. 删除链表的倒数第 N 个结点

    19. 删除链表的倒数第 N 个结点 Ideas 链表经典题目,还是09年考研408数据结构最后一道大题,在LeetCode上只能算中等难度的题目. 说回题目其实不难,之前跟着左神练了很多双指针的题目 ...

  3. 【LeetCode】【HOT】19. 删除链表的倒数第 N 个结点(双指针)

    [LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 文章目录 [LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 package hot;import ...

  4. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  5. 【力扣(LeetCode)】【C/C++】【19.删除链表的倒数第 N 个结点】

    学习时间: 2023年1月30日 题目描述: 题解分享: // 作 者 : 繁 华 倾 夏 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h&g ...

  6. Java每日一题——>19. 删除链表的倒数第 N 个结点

    这是LeetCode上的 [19,删除链表的倒数第 N 个结点],难度为 [中等] 题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例1 输入:head = [1,2,3, ...

  7. 29. Leetcode 19. 删除链表的倒数第 N 个结点 (链表-双指针)

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点.示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], ...

  8. leetcode 19. 删除链表的倒数第 N 个结点(双指针应用)

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1 ...

  9. 2095. 删除链表的中间节点、19. 删除链表的倒数第 N 个结点、148. 排序链表

    LeetCode题解 1.2095. 删除链表的中间节点 2. 删除链表的倒数第 N 个结点 3.排序链表 1.2095. 删除链表的中间节点 题目描述: ➡️挑战链接⬅️ 分析: 首先题目要求我们删 ...

最新文章

  1. spring boot整合spring security笔记
  2. linux 获取内核线程数,如何从命令行获取Linux中的CPU /内核数量?
  3. matplotlib 制作不等间距直方图
  4. kafka java客户端编程
  5. Go语言编程:Go语言实现快速排序算法
  6. Codeforces Round #519 by Botan Investments翻车记
  7. Vim用原生雅黑Consolas混合字体
  8. Android wakelock机制
  9. java程序设计-飞机大战
  10. asp cstr 函数
  11. Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
  12. Wasserstein GANs 三部曲(二):Wasserstein GAN论文的理解
  13. Learning from Very Few Samples:小样本学习综述(三)
  14. 坚果投影仪怎么才能访问电脑共享文件,详细的操作方法分享
  15. mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX' 报错1142处理
  16. 软件管理沉思录读书笔记
  17. 最新勒索软件WannaCrypt病毒感染前清除处理及加固
  18. 纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍
  19. Jsp:WebRoot与WebContent区别
  20. L2-离散变量分布:Bernoulli分布、二项分布、泊松分布等

热门文章

  1. Cascading(一)之日志解析
  2. 命令行 sc delete 的使用(删除服务项)
  3. 14条最佳JS代码编写技巧
  4. pku 1185 炮兵阵地
  5. TortoiseGit git push提示fatal: HttpRequestException encountered remote: Invalid username or password.
  6. SNMP功能开发简介 一 net-snmp编译与安装
  7. Spring第一讲:初步了解Spring
  8. JAVA编程TXT文件_java读写txt文件的方法
  9. 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
  10. java发布sevlet_发布一个java Servlet (静态发布)