文巾解题 19. 删除链表的倒数第 N 个结点
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 个结点相关推荐
- LeetCode-链表-19. 删除链表的倒数第 N 个结点
描述: 19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4, ...
- LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点 Ideas 链表经典题目,还是09年考研408数据结构最后一道大题,在LeetCode上只能算中等难度的题目. 说回题目其实不难,之前跟着左神练了很多双指针的题目 ...
- 【LeetCode】【HOT】19. 删除链表的倒数第 N 个结点(双指针)
[LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 文章目录 [LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 package hot;import ...
- 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...
- 【力扣(LeetCode)】【C/C++】【19.删除链表的倒数第 N 个结点】
学习时间: 2023年1月30日 题目描述: 题解分享: // 作 者 : 繁 华 倾 夏 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h&g ...
- Java每日一题——>19. 删除链表的倒数第 N 个结点
这是LeetCode上的 [19,删除链表的倒数第 N 个结点],难度为 [中等] 题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例1 输入:head = [1,2,3, ...
- 29. Leetcode 19. 删除链表的倒数第 N 个结点 (链表-双指针)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点.示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], ...
- leetcode 19. 删除链表的倒数第 N 个结点(双指针应用)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1 ...
- 2095. 删除链表的中间节点、19. 删除链表的倒数第 N 个结点、148. 排序链表
LeetCode题解 1.2095. 删除链表的中间节点 2. 删除链表的倒数第 N 个结点 3.排序链表 1.2095. 删除链表的中间节点 题目描述: ➡️挑战链接⬅️ 分析: 首先题目要求我们删 ...
最新文章
- spring boot整合spring security笔记
- linux 获取内核线程数,如何从命令行获取Linux中的CPU /内核数量?
- matplotlib 制作不等间距直方图
- kafka java客户端编程
- Go语言编程:Go语言实现快速排序算法
- Codeforces Round #519 by Botan Investments翻车记
- Vim用原生雅黑Consolas混合字体
- Android wakelock机制
- java程序设计-飞机大战
- asp cstr 函数
- Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
- Wasserstein GANs 三部曲(二):Wasserstein GAN论文的理解
- Learning from Very Few Samples:小样本学习综述(三)
- 坚果投影仪怎么才能访问电脑共享文件,详细的操作方法分享
- mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX' 报错1142处理
- 软件管理沉思录读书笔记
- 最新勒索软件WannaCrypt病毒感染前清除处理及加固
- 纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍
- Jsp:WebRoot与WebContent区别
- L2-离散变量分布:Bernoulli分布、二项分布、泊松分布等
热门文章
- Cascading(一)之日志解析
- 命令行 sc delete 的使用(删除服务项)
- 14条最佳JS代码编写技巧
- pku 1185 炮兵阵地
- TortoiseGit git push提示fatal: HttpRequestException encountered remote: Invalid username or password.
- SNMP功能开发简介 一 net-snmp编译与安装
- Spring第一讲:初步了解Spring
- JAVA编程TXT文件_java读写txt文件的方法
- 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式
- java发布sevlet_发布一个java Servlet (静态发布)