链表遍历一次删除倒数第N个节点

一次遍历删除倒数第n个节点 一次遍历单链表删除倒数第n个节点的问题,跟删除某个节点的前一个节点是一个思路 立即下载
刷 leetcode的 Remove Nth Node From End of List 的题目,一开始想这算是easy的题目了,只需要遍历一次,记录n个节点,然后减去倒数的节点数,就得到所要删除的节点。但是没注意题目的只遍历一次。
解决这道题目的主要思路是,设立两个指针,快指针和慢指针,这两个指针同时指向初始位置。快指针先移动N个节点,快节点和慢节点同时移动,当快节点移动到末尾时,慢节点处于要删除节点的next节点。
代码写得比较烂,后期在改进。
#include<iostream>
#include<vector>
#include<string>
 
using namespace std;

typedef struct ListNode {
	int val;
	ListNode *next;
}ListNode;

class Solution {
public:
	ListNode* removeNthFromEnd(ListNode* head, int n) {
		ListNode *cur = head;
		ListNode *index=head;
		ListNode *temp;
		for (int i = 0; i < n; i++)
		{
			cur = cur->next;
			
		}
		if (cur == NULL)
		{
			head =head->next;
			return head;
		}
		while (cur->next != NULL)
		{
			index = index->next;
			cur = cur->next;
		}
		index->next= index->next->next;			
		return head;
	}
};

void CreatList(ListNode* & head,int *a)
{
	for (int i = 0; i < 5; i++)
	{
		ListNode *temp=new ListNode;
		temp->val = a[i];
        head->next=temp;
		head = head->next;
	}
	head->next = NULL;		
}

int main()
{
	Solution s;
	int n;
	cin >> n;
	int arr[5] = {1,2,3,4,5};
	ListNode *head=new ListNode;
	ListNode *OutPut = head;
	CreatList(head,arr);
	OutPut=s.removeNthFromEnd(OutPut->next, n);
	while (OutPut != NULL)
	{
		cout << OutPut->val << endl;
		OutPut = OutPut->next;
	}
	system("pause");

}

Ansys Zemax导入CAD文件避坑指南:STL/STEP/IGES格式选择与性能优化 本文深度解析了在Ansys Zemax中导入CAD文件的核心要点与性能优化策略。针对STL、STEP、IGES等主流格式,详细对比了其几何表示、精度与适用场景差异,并提供了基于模型特征的格式选择决策树。文章重点分享了体元、弦公差等高级参数的调优技巧,以及处理复杂装配体和避免精度陷阱的实战指南,旨在帮助光学工程师提升仿真效率与结果可靠性。 阅读详情

相关推荐

Visio 2013 Professional密钥安装激活全攻略:版本匹配与故障排查

产品密钥是软件授权体系中的核心凭证,用于验证用户对软件的使用权限。在微软Office产品线中,Visio 2013 Professional采用25位字符的密钥机制,通过联网或电话方式完成激活。正确使用密钥不仅能确保软件功能完整,还能避免因授权问题导致的工作中断。对于企业IT运维和个人用户而言,掌握密钥类型辨析、安装包匹配规则以及激活失败排查方法,是保障老版本软件稳定运行的关键。本文围绕Visio 2013 Professional,详细讲解密钥输入、激活流程及常见错误代码处理,帮助读者高效完成部署与维护。

weixin_28487433的博客 364

链表之删除链表的倒数第N个节点(一次遍历)

问题 给你一个链表,删除链表的倒数第 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] 解决 双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。 例如

白鸽 1059

Linux DRM驱动实战:手把手教你用drmModeSetCrtc显示纯色画面(附完整代码)

本文提供了一份完整的Linux DRM驱动实战指南,手把手教你使用drmModeSetCrtc在屏幕上显示纯色画面。文章详细解析了从打开设备、获取资源、创建帧缓冲区到最终提交画面的完整调用流程,并附带了可直接编译运行的完整代码示例,帮助开发者快速上手Linux图形底层开发。

weixin_29216353的博客 513

数据结构之删除链表的倒数第N个节点

(leetcode刷题) 删除链表的倒数第N个节点   题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。   示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.      当删除了倒数第二个节点后,链表变为 1->2->3->5.   方法一:两次遍历 第一遍算出长度,第二遍找到节点并删除。时间复杂...

qq_40160983的博客 388

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch的Master选举机制是其分布式架构的基石,确保集群高可用性和数据一致性。通过多数派协议,节点间交换信息并投票选举Master,以维护集群状态和处理请求。该机制自动处理故障转移,保障服务连续性。

weixin_40736233的博客 1775

【近源攻击】badusb制作

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

qinjilll的博客 2550

删除链表的倒数第N个节点

文章目录LeetCode刷题之删除链表的倒数第N个节点题目描述示例解题思路代码leetcode记录 LeetCode刷题之删除链表的倒数第N个节点 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->...

程序员大航子 8万+

R3LIVE 1.0 适配 Velodyne 16线雷达:3步配置解决150米漂移问题

本文详细解析了R3LIVE 1.0适配Velodyne 16线雷达时出现的150米漂移问题,并提供三步配置方案。通过调整雷达类型设置、运动补偿与时间对齐、视觉-激光联合优化等关键参数,有效解决了系统漂移问题,提升定位精度。适用于机器人定位与建图领域的开发者。

weixin_29054195的博客 270

单链表的应用--删除倒数第n个结点

  删除倒数第n个结点,利用前文写好的链表的框架,在链表类中补充DeleteNthFromEnd方法。 删除倒数第n个结点一、问题分析二、代码分析1.链表类2.链表方法三、测试代码1.主函数2.输出结果四、源代码获取(免积分) 一、问题分析   给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head =

AI Chen的博客 1636

手把手教你搞定Pattern Recognition Letters的LaTeX投稿(附elsarticle.cls生成避坑指南)

本文详细指导如何在Pattern Recognition Letters(PRL)期刊上使用LaTeX进行投稿,特别针对elsarticle.cls文件的生成与常见问题提供避坑指南。从模板准备、文件上传到投稿后的验证,系统梳理全流程技术要点,帮助研究者高效完成学术论文投稿。

weixin_33824385的博客 430

Buck电源设计常见的一些问题(一)半桥栅极驱动芯片共性失效问题

半桥驱动芯片主要用在器件可应用于电信,数据通信,便携式存储或更低电压系统中的电源转换器,半桥、全桥、推挽、同步降压,正激变换器和同步整流器等方面。当然难免会遇到不少问题。基本上我们在产品开发的过程中都遇到过栅极驱动芯片坏掉的情况,所以找了一些资料,学习学习。也查找查找原因。

小幽余生不加糖 2371

[链表]删除链表的倒数第N个节点

数据结构与算法、链表、力扣、删除链表的倒数第N个节点、暴力解法、双指针解法!

weixin_42415173的博客 901

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

力扣19,删除链表中的倒数第n个节点 一次遍历

1、双指针明确来说也不算一次遍历因为需要先移动n次快指针 这里要注意删除头节点的情况。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * Lis..

小吕的博客 363

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一次遍历,从一个单向链表中删除倒数第n个节点

今天下午腾讯面试考了一道算法题:要求从一个单向链表中删除倒数第n个节点,要求最多只能遍历链表一遍。 面试时我只是给出了思路,晚上画图编码归纳整理记录一下。 思路在上图已经表达的很明确了,其实解题的关键点是利用好n,我们把n当作一把尺子从链表头移动到链表尾后,尺子的左端指的就是我们要删除的倒数第n个节点。 下面贴一下代码实现: /** * @param head 链表头节点 * @param n 要删除的倒数第n个节点,数字n * @return 删除倒数第

github_2011的博客 563

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

力扣19. 删除链表的倒数第N个节点(两次遍历、加间隔一次遍历)

力扣19. 删除链表的倒数第N个节点(两次遍历、加间隔一次遍历) https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,...

小麦China的博客 332

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Leetcode(19)—— 删除链表的倒数第N个节点(一次遍历(双指针)和 两次遍历)

Leetcode 19 —— 删除链表的倒数第N个节点

weixin_42754478的博客 583

问题描述: 给你一个链表,删除链表的倒数第n个节点,并且返回链表的头节点。请使用一次遍历解决该问题

问题描述: 给你一个链表,删除链表的倒数第n个节点,并且返回链表的头节点。请使用一次遍历解决该问题。解析:首先需要找到链表的倒数第n个节点,然后删除该节点,最后返回链表的头节点。链表 head = [1,2,3,4,5], n = 2。输出结果为:1 -> 2 -> 3 -> 5。输出描述: 1, 2, 3, 5。输入样例: 1,2 n=1。

倚楼听风雨的博客 156

8道链表常考题-一次遍历删除链表倒数第N个节点

可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动 n+1 步,而第二个指针将从列表的开头出发。现在,这两个指针被 nn 个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔,直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第 n 个结点。我们重新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。 public ListNode re...

肥叔菌的博客 9024

leetcode hot150题解第19题,删除链表倒数第n个节点

题目中要求最好将链表只遍历一次才可以,但是根据分析可知,链表题无非三种方法:哑节点、栈、快慢指针(双指针)。第二种栈方法即将所有链表压进栈,再通过出栈n次找到要删除的节点,仍是遍历两次;下一步就是关键的找节点了,其实这里隐藏着一个坑,如果简单的变为向后移动length - n - 1个节点,然后再curr.next = curr.next.next;时,当只有一个节点的链表就会出错。所以正确的是将哑节点设置在head的前一个,将循环变成for (i = 1;给你一个链表,删除链表的倒数第。

weixin_45201305的博客 611

Java 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:给定的 n 保证是有效的。 一次遍历法 由于我们要删除倒数第n个节点,所以我们设置两个快慢指针 tail 和 head,同时对链表进行遍历,并且 tail 比 head 超前 n 个节点。当 tail 遍历到链表的末尾时,head 就恰好处于倒数第 n 个节点。

weixin_44751255的博客 993

LeetCode[19]删除链表的倒数第N个节点

要想一次循环,一趟遍历完,那肯定是要想到双指针了,但是双指针怎么做呢?题目给出删除倒数第N个,我们如果能找到倒数第N个节点的前一个节点就行了,倒数第N个肯定是倒着数,那我们就让两个指针中间就差N个单位,当快指针走到链表最后一个的下一个null节点时,这时候慢指针就是倒数第N个节点的前一个节点了,因为快慢指针始终相差N个节点。

月亮被咬碎成星星的博客 256

【C语言】Leetcode 19 删除链表的倒数第N个节点(只允许遍历一次)

解题思路: 参考了leetcode里面的解法,采用双指针固定长度浮窗方案(不知道命名是否准确),即设立两个指针,起始指针p,以及结束指针q,p先保持不动,q移动到n+1的位置,然后p,q同时往后移动,直至q达到NULL点。 struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ struct ListNode *re...

weixin_43744788的博客 254

leetcode 19.删除链表的倒数第N个节点(js)

题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 题解: /** * Definition for singly-linked list. * func...

Blablabla_的博客 460

【LeetCode】19. 删除链表的倒数第N个节点 【链表】

19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 两次遍历法 先遍历出链表的长度 然后遍历出倒数第几个链表再删除 /** * Definition for singly-linked list. * pu

森森猪的博客 137
上一篇: C++二叉树的建立以及遍历
下一篇: Generative adversarial net with Mnist
SoyCoder
博客等级 码龄9年 12粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值