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

想法一 

先用tail指针找尾,计算出节点个数,再根据倒数第N个指定删除

想法二 

根据进阶的要求,只能遍历一遍链表,那刚刚想法一就做不到 

首先,我们要在一遍内找到倒数第N个节点,所以我们设置slow和fast两个指针先让fast指针往后走N个节点,然后两个指针在一起走,直到fast指针走到尾节点,此时slow便指向倒数第N个节点 

 

然后,找到指定节点后,要分情况删除:头删,中间删除,尾删 

头删:fast指针为NULL时,则为头删 

 

尾删:slow指针下一个节点就是fast指针时,则为尾删 

 

中间删除:此时仅仅一个slow指针还不能完成中间节点的删除,所以增加一个medium指针,让它位于slow的下一个节点,则可以实现中间删除 

 

完整代码如下: 

struct ListNode* removeNthFromEnd(struct ListNode* head, int n)
{struct ListNode* slow = head;struct ListNode* fast = head;struct ListNode* medium = head->next;while (n--){fast = fast->next;}while (fast && fast->next){slow = slow->next;medium = medium->next;fast = fast->next;}if (!fast){//头删head = slow->next;free(slow);}else if(slow->next == fast){//尾删slow->next = NULL;free(fast);}else{//中间删除slow->next = medium->next;free(medium);}return head;
}

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

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

相关文章

优化编辑距离以测量文本相似度

一、说明 编辑距离是一种文本相似度度量,用于测量 2 个单词之间的距离。它有许多方面应用,如文本自动完成和自动更正。 对于这两种用例中的任何一种,系统都会将用户输入的单词与字典中的单词进行比较,以找到最接近的匹配项&#x…

Codeforces Round 908 (Div. 2)题解

目录 A. Secret Sport 题目分析: B. Two Out of Three 题目分析: C. Anonymous Informant 题目分析: A. Secret Sport 题目分析: A,B一共打n场比赛,输入一个字符串由A和‘B’组成代表A赢或者B赢(无平局),因为题目说明这个人…

FPGA与STM32_FSMC总线通信实验

FPGA与STM32_FSMC总线通信实验 内部存储器IP核的参数设置创建IP核FPGA代码STM32标准库的程序 STM32F407 上自带 FSMC 控制器,通过 FSMC 总线的地址复用模式实现STM32 与 FPGA 之间的通信,FPGA 内部建立 RAM 块,FPGA 桥接 STM32 和 RAM 块&…

图论13-最小生成树-Kruskal算法+Prim算法

文章目录 1 最小生成树2 最小生成树Kruskal算法的实现2.1 算法思想2.2 算法实现2.2.1 如果图不联通,直接返回空,该图没有mst2.2.2 获得图中的所有边,并且进行排序2.2.2.1 Edge类要实现Comparable接口,并重写compareTo方法 2.2.3 取…

网络运维Day10

文章目录 SHELL基础查看有哪些解释器使用usermod修改用户解释器BASH基本特性 shell脚本的设计与运行编写问世脚本脚本格式规范执行shell脚本方法一方法二实验 变量自定义变量环境变量位置变量案例 预定义变量 变量的扩展运用多种引号的区别双引号的应用单引号的应用反撇号或$()…

HTML使用lable将文字与控件进行关联以获取焦点

先养养眼再往下看 注释很详细&#xff0c;直接上代码 <form action""><!-- 第一种方法:用id的方式绑定账户(文字)和输入框 --><label for"zhanghu">账户</label><input "text" id"zhanghu" name"ac…

一步一步详细介绍如何使用 OpenCV 制作低成本立体相机

在这篇文章中,我们将学习如何创建定制的低成本立体相机(使用一对网络摄像头)并使用 OpenCV 捕获 3D 视频。我们提供 Python 和 C++ 代码。文末并附完整的免费代码下载链接 我们都喜欢观看上面所示的 3D 电影和视频。您需要如图 1 所示的红青色 3D 眼镜才能体验 3D 效果。它是…

时间序列预测实战(九)PyTorch实现LSTM-ARIMA融合移动平均进行长期预测

一、本文介绍 本文带来的是利用传统时间序列预测模型ARIMA(注意&#xff1a;ARIMA模型不属于机器学习)和利用PyTorch实现深度学习模型LSTM进行融合进行预测&#xff0c;主要思想是->先利用ARIMA先和移动平均结合处理数据的线性部分&#xff08;例如趋势和季节性&#xff09…

C语言求解猴子分桃问题

题目&#xff1a; 海滩上有一堆桃子&#xff0c;五只猴子来分。第一只猴子把这堆桃子凭据分为五份&#xff0c;多了 一个&#xff0c;这只猴子把多的一个扔入海中&#xff0c;拿走了一份。第二只猴子把剩下的桃子又平均分 成五份&#xff0c;又多了一个&#xff0c;它同样把多…

HCIA-DHCP+DHCP中继

DHCPDHCP中继 实验拓扑配置步骤第一步 配置Eth-Trunk聚合链路&二层VLAN第二步 配置IP地址第三步 配置DHCPDHCP中继 配置验证查看PC1 PC2是否正确的获得了IP地址 实验拓扑 配置步骤 第一步 配置Eth-Trunk聚合链路&二层VLAN SW1 sysname SW1 # undo info-center enabl…

男科医院服务预约小程序的作用是什么

医院的需求度从来都很高&#xff0c;随着技术发展&#xff0c;不少科目随之衍生出新的医院的&#xff0c;比如男科医院、妇科医院等&#xff0c;这使得目标群体更加精准&#xff0c;同时也赋能用户可以快速享受到服务。 当然相应的男科医院在实际经营中也面临痛点&#xff1a;…

SAM + YOLO 智能抠图

在计算机视觉领域&#xff0c;对象检测和实例分割是使机器能够理解视觉数据并与之交互的关键任务。 准确识别和隔离图像中的物体的能力具有许多实际应用&#xff0c;从自动驾驶车辆到医学成像。 在这篇博文中&#xff0c;我们将探索如何在 Roboflow 和 Ultralytics YOLOv8 的帮…