19、删除链表的倒数第n个节点

1、题目描述

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

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

进阶:你能尝试使用一趟扫描实现吗?

2、分析

(1)毋庸置疑,肯定是要双指针了(p_cur1/p_cur2);

(2)这里重点就是要却确定p_cur1移动多少步后,p_cur2也跟着一起移动;关于这个点{1,2,3,4,5}比划一下就比较清楚了;

(3)另外就是在输入链表前追加一个节点便于返回数据的玩法了,这个应该作为基本操作记住。

ListNode* xxxfunction(ListNode* head){ListNode cur(0, head);ListNode* p_cur = &cur;ListNode* root = &cur;…………return root->next;
}

关于执行过程,其实如下:

(1)左侧node(0)是我们人为添加进去的节点,指向原链表表头head。

(2)cur1/cur2/root 为各指针的初始状态;

(3)在删除倒数第二个节点的情况下cur1和cur2最终状态如虚线cur1/cur2所示;

(4)显然cur2->next = cur2->next->next 即实现对node(4)的删除;

(5)我们最终返回root->next即可。

3、实现代码

#include <iostream>
#include <string>
#include <vector>using namespace std;struct ListNode{int val;ListNode* next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr){}ListNode(int x, ListNode* ptr) : val(x), next(ptr) {}
};class Solution{public:ListNode* removeNthFromEnd(ListNode* head, int n){ListNode cur(0, head);ListNode* p_cur1 = &cur;ListNode* p_cur2 = &cur;ListNode* root = &cur;int i = 0;while(p_cur1 != nullptr){p_cur1 = p_cur1->next;i++;//对着{1,2,3,4,5}笔画一下就知道要在cur1移动了n+1下之后cur2在移动是正合适的。//因为,cur2要停留在目标删除节点的前一个节点上才行。if (i > n+1){p_cur2 = p_cur2->next;}}p_cur2->next = p_cur2->next->next;return root->next;}void print_list(ListNode* head){ListNode *cur_ptr = head;while(cur_ptr != nullptr){cout << cur_ptr->val << ",";cur_ptr = cur_ptr->next;}cout << endl;}
};int main()
{Solution s1;ListNode n5(5);ListNode n4(4, &n5);ListNode n3(3, &n4);ListNode n2(2, &n3);ListNode n1(1, &n2);// ListNode n2(2);// ListNode n1(1, &n2);s1.print_list(&n1);ListNode* head = s1.removeNthFromEnd(&n1, 1);s1.print_list(head);}

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

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

相关文章

总结一些LLM算法岗遇到的八股

总结一些我被问到的题和常见的题目&#xff0c;答案有不对的欢迎指出。 Batch Norm和Layer Norm的定义及区别&#xff1f; BN 批量归一化&#xff1a;以进行学习时的mini-batch为单位&#xff0c;按mini-batch进行正规化。具体而言&#xff0c;就是进行使数据分布的均值为0、…

AI 编程探索- iOS动态标签控件

需求分析&#xff1a; 标签根据文字长度&#xff0c;自适应标签居中显示扩展 超过内容显示范围&#xff0c;需要换行显示&#xff0c;且保持居中显示 AI实现过程 提问&#xff1a; 回答&#xff1a; import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…

命令行中关于windows hash md5 , mac hash md5 , linux hash md5 文件校验方式

md5&#xff0c; sha-1 &#xff0c;sha256. windows certutil -hashfile filename md5certutil -hashfile filename sha1certutil -hashfile filename sha256macos 平台 md5 filenameshasum -a 1 filenameshasum -a 256 filenamelinux 平台 md5sum filenameshasum -a 1 fil…

CEWEY C9自动猫砂盆测评:千元级安全实用稳定输出,解放铲屎官双手!

最近邻居姐姐成为新晋铲屎官&#xff0c;猫咪的吃喝还好&#xff0c;因为是打工人每天要早出晚归&#xff0c;铲屎这项不能等待的任务就让她很苦恼&#xff0c;猫砂盆太脏猫咪要么憋着不上要么乱拉乱尿&#xff0c;搞得小姐姐身心俱疲。看着她日渐憔悴的脸色&#xff0c;我这个…

Linux 动态监控系统

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处&#xff0c;在于top在执行一段时间可以更新正在运行的的进程。 一、基本指令 top top -d&#xff1a; 秒数 :每隔设定值秒数更新&#xff0c;未设置下默认为3秒 top -i:使top不显示任何闲置或者僵死进…

chkstk.asm未经处理的异常

【1】异常图片 【2】异常原因 运行程序时&#xff0c;程序尝试分配的内存超出了当前线程的堆栈边界 【3】定位&#xff1a;如下图&#xff0c;数组分配过大

定时触发-uniapp + uniCloud 订阅消息实战教程(三)

上一节已经对云函数有了一定的了解&#xff0c;但是&#xff0c;为了发送订阅消息&#xff0c;只会云函数还是差了那么一点意思&#xff0c;所以接下来的这一节&#xff0c;将带领大家熟悉一下定时触发。 熟悉定时触发 如果云函数需要定时/定期执行&#xff0c;即定时触发&…

【力扣C++】爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&#x…

昇思25天学习打卡营第1天|初学教程

文章目录 背景创建环境熟悉环境打卡记录学习总结展望未来 背景 参加了昇思的25天学习记录&#xff0c;这里给自己记录一下所学内容笔记。 创建环境 首先在平台注册账号&#xff0c;然后登录&#xff0c;按下图操作&#xff0c;创建环境即可 创建好环境后进入即可&#xff0…

文华财经wh7均线ema金叉死叉预警指标公式源码

文华财经wh7均线ema金叉死叉预警指标公式源码&#xff1a; 文华财经均线EMA预警指标公式源码&#xff1a; EMA25:EMA(C,25); EMA70:EMA(C,70); EMA580:EMA(C,580); //在EMA580上方EMA25和EMA70金叉EMA70在EMA580上方创1日新高创前5根K线最高 EMA25>EMA580&&EM…

Jenkins教程-8-上下游关联自动化测试任务构建

上一小节小节我们学习了一下Jenkins自动化测试任务发送测试结果邮件的方法&#xff0c;本小节我们讲解一下Jenkins上下游关联自动化测试任务的构建。 下面我们以一个真实的自动化测试场景来讲解Jenkins如何管理上下游关联任务的触发和构建&#xff0c;比如我们有两个jenkin任务…

病毒防护:恶意代码检测技术,病毒分类、传播方式,恶意代码的清除与防护

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

惠海 HC070N06LS 6N06 沟槽型NMOS管 皮实耐抗 丝印HC606A 抗雪崩能力强

产品详情 HC070N06LS 60V/6A MOS管 低Vth 惠海半导体原厂 抖频过认证EMC&EMI:0 产品详情 型号HC070N06LS品牌惠海半导体 封装SOT23-3输入电压60V 驱动方式内置MOS耐压150V。 Features &#xff1a; N-Channel Enhancement mode Very low on-resistance VGS4.5V Fast S…

力扣每日一题 下一个更大元素 II 单调栈 循环数组

Problem: 503. 下一个更大元素 II 思路 &#x1f468;‍&#x1f3eb; 参考题解 Code class Solution {public int[] nextGreaterElements(int[] nums) {int n nums.length;int[] res new int[n];Arrays.fill(res,-1);Stack<Integer> stack new Stack<>();//…

docker-compose部署Flink及Dinky

docker-compose部署Flink及Dinky 服务器环境&#xff1a;centos7 1. 配置hosts vim /etc/hostsx.x.x.x jobmanager x.x.x.x taskmanager x.x.x.x dinky-mysql2. 文件目录结构 . ├── conf │ ├── JobManager │ │ ├── flink-conf.yaml │ │ ├── log…

Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)

简介 看《西游记》第五十七回&#xff0c;说是“六耳猕猴”化作孙悟空的摸样&#xff0c;伤了唐僧&#xff0c;后又和孙悟空大打出手…… 这位假孙悟空&#xff0c;实力不用多说了吧&#xff0c;和真孙悟空一般无二&#xff0c;大战孙悟空&#xff0c;闹到上天入地下海。 在唐僧…

服装连锁企业批发零售一体化解决方案

在现代商业环境中&#xff0c;服装连锁企业面临着市场竞争激烈、消费者需求多样化和供应链复杂化的挑战。为了有效应对这些挑战&#xff0c;建立一体化的批发零售解决方案已成为提升运营效率、优化客户体验的关键举措。这种解决方案不仅整合了进销存管理&#xff0c;还有效整合…

Kotlin设计模式:工厂方法详解

Kotlin设计模式&#xff1a;工厂方法详解 工厂方法模式&#xff08;Factory Method Pattern&#xff09;在Kotlin中是一种常见的设计模式&#xff0c;用于将对象创建的责任委派给单一的方法。本文将详细讲解这一模式的目的、实现方法以及使用场景&#xff0c;并通过具体的示例…

核心原因:如果互联网设计师是青春饭,为何别人的青春那么久?

大家好&#xff0c;我是大千UI工场&#xff0c;从事UI设计和前端开发快10年了&#xff0c;算是老司机&#xff0c;经常看到UI设计师在群里抱怨&#xff0c;说这行是青春饭&#xff0c;干几年就换行&#xff0c;真相是这样吗&#xff1f; 一、互联网设计师相较于传统设计师 互…

ventoy制作PE盘系统镜像安装盘,别再用什么软碟通UltraISO刻录进贼慢的U盘里做系统了。

还用U盘呢&#xff0c;10块钱傲腾读取900MB/sNVMe硬盘盒30多块钱&#xff0c;别再用什么软碟通UltraISO刻录进贼慢的U盘里做系统了。 官方下载地址&#xff1a;https://www.ventoy.net/cn/download.html 下载对应版本 运行Ventory2Disk.exe自动识别你的移动介质&#xff0c;然…