29、链表-删除链表的倒数第N个结点

思路:

首先找到倒数第N个结点

  1. 第一种方式 先统计链表的节点数,然后再次遍历len-N即可得到倒数第N个结点,然后将前一个节点的next指针指向next的下一个节点
  2. 使用快慢指针,快指针先跑N个结点然后慢指针开始跑,等快指针到达尾节点后,慢指针的位置就是倒数第N个结点位置

代码如下:

/*** 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 removeNthFromEnd01(ListNode head, int n) {if (head == null) {return head;}List<ListNode> list = new ArrayList<>();while (head!=null){list.add(head);head=head.next;}list.remove(list.size()-n);if (list.isEmpty()){return null;}ListNode node=list.get(0);ListNode cur=node;for (int i = 1; i < list.size(); i++) {cur.next=list.get(i);cur=cur.next;}cur.next=null;return node;}//计数方式 删除倒数第n个 先算出 链表长度public static ListNode removeNthFromEnd02(ListNode head, int n) {if (head==null){return null;}int len=0;ListNode node=head;while (node!=null){len++;node=node.next;}if (n>len){return head;}if (n==len){return head.next;}//倒数第N个 就是整数len-n个ListNode cur=head;int index=0;while (cur!=null){//走到前一个节点时if (index==len-n-1){cur.next=cur.next.next;break;}cur=cur.next;index++;}return head;}//使用快慢指针  快指针先走n个节点  慢指针再开始走 当快指针到达null节点时候 慢指针正好到达倒数第n个节点//并且添加哑节点 来简化边界条件 防止如果删除的头节点问题public static ListNode removeNthFromEnd(ListNode head, int n) {if (head==null){return null;}ListNode dummy  = new ListNode(0, head);ListNode fast=dummy ;ListNode slow=dummy;for (int i = 0; i <= n; i++) {fast=fast.next;}while (fast!=null){slow=slow.next;fast=fast.next;}slow.next=slow.next.next;return dummy.next;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多因子模型的因子选取

经典的Alpha模型是一些多因子模型&#xff0c;用于预测Alpha模型的信息比率&#xff0c;从而来判断判断模型的好坏。这里我们所说的信息比率是相对收益率除以非系统性风险&#xff0c;所以当我们在进行因子选择的时候&#xff0c;我们一定不能选取系统性风险模型&#xff08;例…

免费VPS云服务器汇总,最长永久免费使用

目前云服务器市场竞争很激烈&#xff0c;为了方便吸引上云&#xff0c;很多云计算服务商提供免费试用云服务器&#xff0c;下面给大家整理汇总一下免费VPS云服务器&#xff0c;最长永久免费使用&#xff01; 一、雨云&#xff08;优惠码:ABC&#xff09; 活动地址&#xff1a;…

2D AI交互数字人:赋能文旅、金融、政务、教育行业数字化转型

AI交互数字人结合了语音合成、语音识别、语义理解、图像处理、机器翻译、虚拟形象驱动等多项AI核心技术&#xff0c;可以提供服务导览、业务咨询、语音互动交流、信息播报等智能服务。 其中&#xff0c;2D AI交互数字人是采集真人视频&#xff0c;通过AI训练&#xff0c;生成逼…

认识OpenEuler操作系统

引言 在信息技术日新月异的时代&#xff0c;开源软件已成驱动创新的核心动能&#xff0c;其中&#xff0c;OpenEuler作为一款冉冉升起的开源操作系统典范&#xff0c;凭借其对开源精神的坚守与技术创新的不懈追求&#xff0c;自亮相以来便引发了全球关注。本文将全方位深挖Open…

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…

使用新一代一站式 AI Bot 开发平台扣子coze,搭建我的第一个AI Bot(前端魔法师) ,

目录 1.概述​ 2.功能与优势 3.使用扣子 4.人设与回复逻辑 5.添加插件 6.预览与调试 7.发布bot Store 8.环境大家体验&#xff08;给大家内置了比较屌的插件&#xff09; 9.推荐阅读&#xff1a; 1.概述​ 扣子是新一代一站式 AI Bot 开发平台。无论你是否有编程基础…

iOS------SDWebImage源码

一&#xff0c;简介 一个异步图片下载及缓存的库 特性&#xff1a; 一个扩展UIImageView分类的库&#xff0c;支持加载网络图片并缓存图片异步图片下载器异步图片缓存和自动图片有效期限管理支持GIF动态图片支持WebP背景图片减压保证同一个URL不会再次下载保证无效的URL不会…

Web前端 Javascript笔记3

1、垃圾回收机制 内存中的生命周期 1、内存分配 2、内存使用&#xff08;读写&#xff09; 3、内存回收&#xff0c;使用完毕之后&#xff0c;垃圾回收器完成 内存泄漏&#xff1a;该回收的&#xff0c;由于某些未知因素&#xff0c;未释放&#xff0c;叫做内存泄漏 栈&#xf…

Vue新手入门

1 Vue概述 官网:https://cn.vuejs.org/ 1、什么是Vue.js Vue.js 是目前最火的一个前端框架&#xff0c;React是最流行的一个前端框架&#xff08;React除了开发网站&#xff0c;还可以开发手机App&#xff0c; Vue语法也是可以用于进行手机App开发的&#xff0c;需要借助于W…

Bridge 桥接

意图 将抽象部分与其显示部分分离&#xff0c;使他们都可以独立地变化。 结构 其中&#xff1a; Abstraction定义抽象类的接口&#xff0c;维护一个指向Implementer类型对象的指针。RefinedAbstraction扩展由Abstraction定义的接口。Implementor定义实现类的接口&#xff0c…

React 19 的新增功能:Action Hooks

React 是前端开发领域最流行的框架之一。我喜欢 React 是因为它背后的团队和社区对它的热情。当社区提出新功能和改进的需求时&#xff0c;团队会倾听&#xff0c;React 的未来是令人兴奋和有趣的。 让我们来看一下 React 19 中令开发人员提升开发效率的新特性。对于每个钩子&…

关于项目打包

除了自己常用的那种方式&#xff0c;也可以直接在文件夹下执行命令。 如果当前项目聚合了其他子模块的话&#xff1a; 先清理&#xff0c;再打包&#xff0c;同时跳过测试 如果打包后&#xff0c;然后项执行某个模块&#xff0c;进入当前文件夹下直接java -jar 和jar包名执行就…

k8s:kubectl 命令设置简写启用自动补全功能

k8s&#xff1a;kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Kubernetes&#xff08;K8s&#xff09;是一个强大的容器编排平台&#xff0…

恢复MySQL!是我的条件反射,PXB开源的力量...

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

力扣面试150 分发糖果 分步贪心

Problem: 135. 分发糖果 思路 &#x1f468;‍&#x1f3eb; 参考&#xff1a;代码随想录 一次是从左到右遍历&#xff0c;只比较右边孩子评分比左边大的情况。一次是从右到左遍历&#xff0c;只比较左边孩子评分比右边大的情况。 复杂度 时间复杂度: O ( n ) O(n) O(n) …

低成本,高效能:探索物联网新宠LoRa

LoRa是什么&#xff1f; LoRa是一种物联网无线传输技术&#xff0c;利用调制解调器实现低功耗远距离数据传输。其基本工作原理是通过基站发送数据到特定终端设备&#xff0c;实现双向数据传输。 LoRa无线传输技术是一种为低功耗和低成本设计的无线技术&#xff0c;用于实现远距…

【Linux】CentOS 7安装后没有图形界面

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.当前处于命令行界面&#xff0c;可以切换为图形界面 2.安装时没有安装图形界面&#xff0c;选择了Minimal Install 3.下…

鸿蒙端云一体化开发--开发云函数--适合小白体制

开发云函数 那什么是云函数&#xff1f;我们将来又怎么去使用这个云函数呢&#xff1f; 答&#xff1a;我们之前要编写一些服务端的业务逻辑代码&#xff0c;那现在&#xff0c;在这种端云一体化的开发模式下&#xff0c;我们是把服务端的业务逻辑代码&#xff0c;通过云函数来…

linux安装和使用-第一天

一. 安装linux系统 安装过程:略注意事项: 安装时一定一定一定不要选择有中文的目录包括镜像文件所在的目录,否则会发生各种问题,比如VMware Tools是灰色的.1. 安装ssh工具 (1) 安装命令 # 第一次安装系统需要更新一下apt的源,他维护了软件依赖关系,否则安装不了软件,每次安装…

MT3020 任务分配

思路&#xff1a;利用二分找到某个时间是满足“k个人可以完成” &#xff0c;并且时间最小。 因为尽量让后面的人做任务&#xff0c;所以从后往前排任务&#xff08;倒着分配&#xff09;。从后往前遍历任务&#xff0c;如果此人加上这个任务超出之前求得的时间&#xff0c;就…