当前位置: 首页 > article >正文

day15 leetcode-hot100-29(链表8)

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

1.暴力法

思路

(1)先获取链表的长度L

(2)然后再次遍历链表到L-n的位置,直接让该指针的节点指向下下一个即可。

2.哈希表

思路

(1)将链表中所有节点都加入到哈希表中,其中哈希表的格式为HashMap<Integer,ListNode>,前面表示节点的位置,后面是节点。

(2)根据(1)可以知道链表的总长度nums,倒数第n个节点的位置为del=nums-n+1;

(3)然后取出del-1与del+1位置的节点,让del-1的下一个节点为del+1即可。

ps:需要考虑被删除的节点是否开头节点或者结尾节点。开头直接下一个,结尾直接del-1指向null即可。

具体代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode init = head;HashMap<Integer,ListNode> map =new HashMap<>();int count=0;while(head!=null){map.put(++count,head);head=head.next;}int nums=count;int del=nums-n+1;if(del==1){return init.next;}if(del==nums){if(nums==1){return new ListNode();}else{ListNode p1 = map.get(del-1);p1.next=null;return init;}}ListNode p1 = map.get(del-1);ListNode p2 = map.get(del+1);p1.next=p2;return init;}
}

3.栈

思路

(1)将全部节点入栈。

(2)然后用for循环弹出去n个节点,然后让最后的节点的next等于next.next

ps:初始化的时候设置一个空节点指向head,防止全部弹出去后next.next报错.

具体代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode init = new ListNode(0,head);Deque<ListNode> stack = new LinkedList<ListNode>();ListNode cur = init;while(cur!=null){stack.push(cur);cur=cur.next;}for(int i=0;i<n;i++){stack.pop();}ListNode n1 = stack.peek();n1.next=n1.next.next;return init.next;}
}

4.双指针

思路

设计快慢指针,其中快指针比慢指针多走n次,等快指针到null的时候,慢指针所在的位置就是要弹出的位置的前一个

ps:(1)其实多走了n+1步,因为需要慢指针走到要弹出位置的前一个节点。

(2)慢指针是0节点并指向第一个节点head,快指针一开始就指向head,这样就算长度为1的链表,slow慢指针的next.next也不会报错,否则出现空指针异常。

具体代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode init = new ListNode(0,head);ListNode fast = head;ListNode slow = init;for(int i=0;i<n;i++){fast=fast.next;}while(fast!=null){fast=fast.next;slow=slow.next;}slow.next=slow.next.next;return init.next;}
}

相关文章:

day15 leetcode-hot100-29(链表8)

19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 1.暴力法 思路 &#xff08;1&#xff09;先获取链表的长度L &#xff08;2&#xff09;然后再次遍历链表到L-n的位置&#xff0c;直接让该指针的节点指向下下一个即可。 2.哈希表 思路 &#xff0…...

DeepSeek 赋能文化遗产数字化修复:AI 重构千年文明密码

目录 一、引言二、文化遗产数字化修复概述2.1 文化遗产数字化修复的意义2.2 传统数字化修复方法与局限 三、DeepSeek 技术剖析3.1 DeepSeek 技术原理与核心优势3.2 相比其他技术的独特之处 四、DeepSeek 在文化遗产数字化修复中的应用4.1 破损文物的智能修复4.2 文化遗产的虚拟…...

MonitorSDK_性能监控(从Web Vital性能指标、PerformanceObserver API和具体代码实现)

性能监控 性能指标 在实现性能监控前&#xff0c;先了解Web Vitals涉及的常见的性能指标 Web Vitals 是由 Google 推出的网页用户体验衡量指标体系&#xff0c;旨在帮助开发者量化和优化网页在实际用户终端上的性能体验。Web Vitals 强调“以用户为中心”的度量&#xff0c;而不…...

Spring Boot整合JWT实现认证与授权

概述 JSON Web Token (JWT) 是一种开放标准 (RFC 7519)&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间安全地传输信息。在Web应用中&#xff0c;JWT常用于身份验证和信息交换。 依赖配置 首先需要在项目中添加JWT依赖&#xff1a; <!-- JWT依赖…...

在 Linux 系统上连接 GitHub 的方法 (适用2025年)

在2025年&#xff0c;使用 Linux 系统连接 GitHub 的推荐方式是通过 SSH (Secure Shell) 协议进行身份验证。这种方式不仅安全&#xff0c;还能免去每次操作时输入用户名和密码的繁琐。 &#x1f6e0;️ 步骤一&#xff1a;检查并安装 Git 首先&#xff0c;确保你的系统已安装…...

解决matlab两个库文件名冲突的问题

解决matlab两个库文件名冲突的问题 1、删除一个路径的文件&#xff08;不推荐&#xff09;2、改变优先级&#xff08;让不想要的版本shadowed&#xff09;3、更改文件名 添加一个库&#xff0c;发现总是调用另一个库的同名文件&#xff0c;这是由于路径中优先级问题。 which -…...

PHP 垃圾回收机制解析与应用案例

PHP 垃圾回收机制解析与应用案例 什么是 PHP 垃圾回收机制&#xff1f; PHP 的垃圾回收&#xff08;Garbage Collection, GC&#xff09;机制是其内存管理的重要组成部分。它的主要职责是管理内存的分配与释放&#xff0c;尤其是处理复杂的循环引用问题&#xff0c;确保 PHP …...

es6 函数解构

对象的解构赋值是内部机制&#xff0c;先找回同名属性&#xff0c;再赋值给对应的变量&#xff0c;真正被赋值的是后者。 let node {type:Identifier,name:foo,loc:{start:{line:1,column:1},end:{line:1,column:4}},method:function(){console.log(method);},range:[0,3] };…...

offset三大家族

以下是关于 offset 三大家族的知识点总结&#xff1a; 1. offsetParent 定义&#xff1a;offsetParent 是距离目标元素最近的已定位&#xff08;position 不为 static&#xff09;的祖先元素。特点&#xff1a; 如果父级元素都没有定位&#xff0c;则 offsetParent 为 body。…...

RSTP介绍加实操

简介 STP协议虽然能够解决环路问题&#xff0c;但是收敛速度慢&#xff0c;影响了用户通信质量。如果STP网络的拓扑结构频繁变化&#xff0c;网络也会频繁失去连通性&#xff0c;从而导致用户通信频繁中断。IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP&#xff08;R…...

Elasticsearch父子关系解析

引言 在复杂业务场景中&#xff0c;数据关联查询是搜索与分析的核心需求。以电商订单、文章评论、客户关系等场景为例&#xff0c;传统关系型数据库通过外键实现的多表关联&#xff0c;在分布式搜索场景下面临性能与扩展性挑战。Elasticsearch通过父子关系&#xff08;Parent-…...

33、请求处理【源码分析】Servlet API参数解析原理

33、请求处理【源码分析】Servlet API参数解析原理 在 Spring Boot 中&#xff0c;请求处理过程中涉及到 **Servlet API 参数解析** 的核心机制&#xff0c;主要依赖于 HandlerMethodArgumentResolver 接口及其相关实现类。以下是其原理的详细分析&#xff1a; --- ### **1. 参…...

基于深度学习的三维图像生成项目开发方案

基于深度学习的三维图像生成项目开发方案 一、项目概述 本项目旨在开发一个基于生成对抗网络(GAN)的三维图像生成系统,能够从随机噪声中生成高质量的三维体素数据。该系统可应用于医学影像合成、游戏内容生成、材料科学等领域。 二、技术架构 #mermaid-svg-JZqC6oWtS9sQ6…...

面试题——计算机网络:HTTP和HTTPS的区别?

HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;作为互联网上应用最广泛的网络通信协议&#xff0c;HTTP是基于TCP/IP协议族的应用层协议。它采用标准的请求-响应模式进行通信&#xff0c;通过简洁的报文格式&#xff08;包含请求行、请求头、请求体等&a…...

Flutter 包依赖升级指南:让项目保持最新状态

在 Flutter 开发过程中&#xff0c;依赖项管理是确保项目顺利运行和持续优化的关键环节。依赖项是项目中不可或缺的外部库&#xff0c;它们提供了各种功能&#xff0c;从 UI 组件到数据处理工具&#xff0c;帮助开发者快速构建应用。然而&#xff0c;随着时间的推移&#xff0c…...

LeeCode 98. 验证二叉搜索树

给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 提示&#xff1a; 树中节…...

JVM类加载高阶实战:从双亲委派到弹性架构的设计进化

前言 作为Java开发者&#xff0c;我们都知道JVM的类加载机制遵循"双亲委派"原则。但在实际开发中&#xff0c;特别是在金融支付、插件化架构等场景下&#xff0c;严格遵循这个原则反而会成为系统扩展的桎梏。本文将带你深入理解双亲委派机制的本质&#xff0c;并分享…...

[网页五子棋][用户模块]数据库设计和配置(MyBatis)、约定前后端交互接口、服务器开发

文章目录 数据库数据库设计配置 MyBatis1. Spring 配置2. 创建实体类3. 创建 Mapper 接口4. 使用 MyBatis 约定前后端交互接口登录接口注册接口获取用户信息 服务器开发loginregistergetUserInfo完整代码 数据库 数据库设计 完成注册登录以及用户分数管理 使用数据库来保存上…...

maven编译时跳过test过程

如果代码里有无法在打包环境中测试的部分&#xff0c;则直接运行mvn clean package&#xff0c;因为测试失败&#xff0c;会导致打包失败。目前有两种方式可以跳过测试&#xff1a; 1. mvn clean package -DskipTests&#xff0c;这会跳过执行阶须&#xff0c;但仍会生成测试所…...

threejsPBR材质与纹理贴图

1. PBR材质简介 本节课没有具体的代码&#xff0c;就是给大家科普一下PBR材质&#xff0c;所谓PBR就是&#xff0c;基于物理的渲染(physically-based rendering)。 Three.js提供了两个PBR材质相关的APIMeshStandardMaterial和MeshPhysicalMaterial,MeshPhysicalMaterial是Mes…...

深兰科技董事长陈海波受邀出席2025苏商高质量发展(常州)峰会,共话AI驱动产业升级

5月29日&#xff0c;2025苏商高质量发展峰会在常州隆重开幕。本次峰会聚焦新质生产力培育与产业创新转型&#xff0c;汇聚了众多江苏省内知名企业家、专家学者及政府代表。深兰科技创始人、董事长陈海波作为人工智能领域的领军企业代表&#xff0c;受邀出席盛会并参与重要活动环…...

【计算机网络】子网划分

文章目录 【计算机网络】子网划分&#xff08;知识点详细&#xff09;一、子网划分基础概念1. **为什么需要子网划分&#xff1f;**2. **关键术语** 二、子网划分核心原理1. **借位规则**2. **子网划分步骤** 三、子网划分实战案例案例1&#xff1a;标准C类网划分&#xff08;等…...

Git入门到精通:30分钟掌握核心技巧

目录 一、基础理论片 Git简介 Git安装 Git仓库 Git基本命令用法 仓库别名 二、实操命令篇 远程分支 分支的新建和合并 实操演示 1 本地新建仓库 2 gitee新建仓库 3 建立关系 4 新建分支 5 开发新功能 6 推送新分支 7 合并新分支到主分支 三、可视化工具篇 G…...

Redis7底层数据结构解析

redisObject 在 Redis 的源码中&#xff0c;Redis 会将底层数据结构&#xff08;如 SDS、hash table、skiplist 等&#xff09;统一封装成一个对象&#xff0c;这个对象叫做 redisObject&#xff0c;也简称 robj。 typedef struct redisObject {unsigned type : 4; // 数…...

Android 异步编程中协程的完整实战示例

一、全链路数据加载&#xff1a;网络请求 数据库缓存 在实际开发中&#xff0c;数据加载通常需要先检查本地缓存&#xff0c;若缓存失效则从网络获取&#xff0c;并将结果更新到本地。以下是完整的 MVVM 架构示例&#xff1a; 1. 项目结构 app/ ├── data/ …...

多部手机连接同一wifi的ip一样吗?

在家庭和办公环境中&#xff0c;多台手机同时连接同一个WiFi路由器已成为常态。不少用户会产生疑问&#xff1a;这些设备的IP地址会相同吗&#xff1f;下面就一起来了解一下吧。 一、多部手机连接同一WiFi的IP‌一样吗 多部手机连接同一WiFi时的IP地址是否相同&#xff0c;需要…...

大语言模型值ollama使用(1)

ollama为本地调用大语言模型提供了便捷的方式。下面列举如何在windows系统中快捷调用ollama。 winR打开运行框&#xff0c;输入cmd 1、输入ollama list 显示已下载模型 2、输入ollama pull llama3 下载llama3模型 3、 输入 ollama run llama3 运行模型 4、其他 ollama li…...

大模型应用开发之Langchain

一、框架简述 Langchain 是一个用于构建和管理 LLM 应用的开发框架。它为开发者提供了工具和接口&#xff0c;以便于更轻松地将大语言模型集成到应用程序中&#xff0c;并处理语言模型生成的响应、管理对话状态、执行链式调用、处理多步任务等。 二、Langchain主要模块 1、M…...

thc-ssl-dos:SSL 压力测试的轻量级工具!全参数详细教程!Kali Linux教程!

简介 THC-SSL-DOS 是一款用于验证 SSL 性能的工具。 建立安全的 SSL 连接需要服务器比客户端高 15 倍的处理能力。 THC-SSL-DOS 利用这种不对称特性&#xff0c;通过使服务器过载并使其断网。 此问题影响当今所有 SSL 实现。供应商自 2003 年以来就已意识到这个问题&#x…...

什么是内网ip证书

内网IP证书是一种基于公钥基础设施&#xff08;PKI&#xff09;技术的数字证书&#xff0c;专门用于保护企业内部网络中通过IP地址访问服务的通信安全。以下是对内网IP证书的详细解析&#xff1a; 一、核心定义与用途 定义&#xff1a;内网IP证书是SSL/TLS证书的一种特殊类型…...