在单链表中删除指定值的节点。
在单链表中删除指定值的节点。
题目:给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除。
例如1->2->3->4->4->null,输出1->2->3->null. num = 4。
1)第一种方法就是用栈来保存值不是num的节点,然后把这些节点进行连接即可。时间和空间都是O(N)。
2)第二种方法就是先找到第一个不是num的节点,然后接着遍历,遍历过程中遇见num删除num ,也就是pre.next = cur. next。时间为O(N),空间为O(1)。
//在单链表中删除指定值的节点。
public class RemoveValue {public static class Node{public int value;public Node next;public Node(int num){this.value = num;}}//用栈来保存不是num的节点,然后重新连接即可,时间为O(N),空间也为O(N)public static Node removeValue1(Node head,int num){Stack<Node> stack =new Stack<>();while (head != null){if (head.value != num){stack.push(head);}head = head.next;}while (!stack.isEmpty()){stack.peek().next = head;head = stack.pop();}return head;}//遇见num,删除num,所有需要保存num的前一个节点,也就是不为num的那个节点。public static Node removeValue2(Node head,int num){//找到第一个节点不是num的。while (head != null){if (head.value != num){break;}head = head.next;}Node pre = head;Node cur = head;while (cur != null){if (cur.value == num){pre.next = cur.next;}else {pre = cur;}cur = cur.next;}return head;}
在单链表中删除指定值的节点。相关推荐
- 单链表中删除指定值的节点
题目 给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除. 基本思路 方法一.时间复杂度O(N),空间复杂度O(N). 利用栈或者其他存储结构.将不等于num的节点收集 ...
- 算法总结之 在单链表中删除指定值的节点
给定一个链表的头节点head和一个整数num,请实现函数将值num的节点全部删除 方法一 利用栈或者其他容器收集的方法 时间复杂度O(N) 额外空间复杂度O(N) 将值不等于num的节点收集起来! ...
- C++实现之单链表中删除指定值
解题思路: (1) 新建单向链表: (2) 删除链表中的指定值: 步骤一: 排除特殊情况:头结点值等于需要删除值data,则先直接删除头部节点: 步骤二: 使用快慢指针ptemp, qtemp; ...
- 链表问题14——在单链表种删除指定值的节点(方法二)
题目 题目可参考上一篇文章,删除链表中的指定值 思路 方法二:不用任何容器,直接调整.时间复杂度O(N),空间复杂度O(1) 因为最后计划返回链表头,所以先遍历链表按顺序找到第一个不等于num的节点作 ...
- 链表问题14——在单链表种删除指定值的节点
题目 给定一个链表的头节点head和一个整数num,实现函数将值为num的节点全部删除. 原链表 删除后链表 1->2->3->4->null, num=3 1->2- ...
- 链表问题2——在单链表中删除倒数第K个节点
题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...
- 从无头单链表中删除节点 结构之法 4
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除. 分析与解答: 假设给定的指针为pCurrent,Node *pN ...
- 编程之美-从无头单链表中删除节点方法整理
[试题描述] 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除. 程序:
- python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法
本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...
最新文章
- 04-多核多cluster多系统之间缓存一致性概述
- Windows上通过bat实现不同数据库之间同步部分表的部分字段数据
- Orion算法:GOOGLE干掉百度的核武器?
- Http协议(7)—Http缓存
- 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
- Python虚拟环境你会用了吗?手把手教你
- 针对《关于郝培强的《为什么我们招聘的时候绝不要传智播客的学生?》》的看法
- python从html拿到数据,python - 使用BeautifulSoup和Python从HTML文件中提取数据 - 堆栈内存溢出...
- sybase 连接mysql_安装sybase服务器并连接数据库
- Qt更改字体为思源黑体
- Web前端开发技术 HTML、CSS、JavaScript pdf
- 考研:研究生考试(十五天学完)之《高等数学-上册/下册》研究生学霸重点知识点总结之目录(函数与极限、导数与微分、微分中值定理与导数、不定积分、定积分及其应用、微分方程、空间解析几何与向量代数、多元函数
- 微信小程序之弹窗功能
- 加拿大计算机科学薪酬,加拿大最好找工作及薪酬最高的十大专业介绍
- hisat2-build
- Tensorflow2.* 加载和预处理数据之用 tf.data 加载 Numpy数据(2)
- 【Shader案例】镜面反射
- 【CSDN软件工程师能力认证学习精选】Python网络编程(socket编程)
- Zynq linux启动过程,详解zynq的启动步骤
- 想做好网络营销?这四步网络营销推广方法至关重要
热门文章
- 「京东开涛」使用Nginx+Lua(OpenResty)开发高性能Web应用
- Go---工厂模式,封装
- 基于安卓/android/微信小程序的课堂管理助手系统(作业管理,在线点名,在线答疑)app-#计算机毕业设计
- 从RVDS(ARM RealView Development Suite)迁移到RealView微控制器开发套件(MDK-ARM)
- Cocoa利用TexturePacker创建的纹理图集实现角色的帧动画
- int0低电平触发c语言,中断执行完后怎么回不去啊??? - 精华源码教程分享区 - 51单片机学习论坛 www.51c51.com - Powered by Discuz!...
- 周六,照了个人形象照
- opencv学习笔记八--答题卡识别
- 8个全球性编程比赛,天才程序员的梦想舞台
- 如何切换不同版本的JDK(win10-64位)