【剑指offer|4.从尾到头打印单链表】

news/2024/5/3 18:44:46/文章来源:https://blog.csdn.net/qq_64428099/article/details/130030990

0.从尾到头打印单链表

image-20230408151740236

单链表:一般给的都是无头节点的

另外:在面试中,如果我们打算修改输入的数据,则最好问一下面试官是不是允许修改

下面这种先把链表节点的值按链表序放到数组中,然后来一个算法库中的reverse属实有点流氓!不可取!

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:vector<int> reversePrint(ListNode* head) {ListNode* cur=head;vector<int> v;while(cur){v.push_back(cur->val);cur=cur->next;}v.reverse(v.begin(),v.end());//先放到数组,然后逆置return v;}
};

1.修改链表的方法

image-20230408162925599image-20230408162944233

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:vector<int> reversePrint(ListNode* head) {//链表逆置ListNode* prev=nullptr;ListNode* cur=head;while(cur){ListNode* next=cur->next;cur->next=prev;prev=cur;cur=next;}head=prev;//头节点的指针现在是prev的位置cur=head;vector<int> v;while(cur){v.push_back(cur->val);cur=cur->next;}return v;}
};

2.不修改链表的方法-栈

/*** Definition for singly-linked list.单链表:一般给的都是无头节点的* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:vector<int> reversePrint(ListNode* head) {stack<ListNode*> st;vector<int> v;ListNode* cur=head;while(cur!=nullptr){st.push(cur);cur=cur->next;}while(!st.empty()){cur=st.top();v.push_back(cur->val);st.pop();}return v;}
};

3.不修改链表的方法-递归

由于递归本身就是栈结构,自然想到用递归来实现

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
//vector<int> v; 不能定义在这里
class Solution {
public:vector<int> v;vector<int> reversePrint(ListNode* head) {//vector<int> v;不能定义在这里if(head!=nullptr){if(head->next!=nullptr){reversePrint(head->next);}v.push_back(head->val);}return v;}
};

注意这里定义vector< int>的两个坑:

坑1:在递归这里我们不能vector定义的成局部的

image-20230408155253305

image-20230408155939607

坑2:不能定义成全局的,我猜测这里是因为力扣OJ在设计测试用例的时候,是通过一下代码来测试的----------------每次都会定义Solution类型的对象然后来调用,所以每一个测试用例就有一个vector< int>的重新定义,而不是像全局的vector< int>在整个main函数内使用的是同一个。

int main()
{vector<int> v;Solution s;v=s.reversePrint(phead1);//Print()Solution s;v=s.reversePrint(phead2);//Print()Solution s;v=s.reversePrint(phead3);//Print()return 0;
}

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

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

相关文章

一文懂KL散度KL Divergence

本文翻译自https://naokishibuya.medium.com/demystifying-kl-divergence-7ebe4317ee68 KL散度中的KL全称是Kullback-Leibler&#xff0c;分别表示Solomon Kullback和Richard A.Leibler这两个人。 一、KL散度的定义 KL散度表明概率分布Q和概率分布P之间的相似性&#xff0c;由…

ARM Linux 内核启动1 —— 汇编阶段

一、Makefile分析 1、Makefile 分析 (1) kernel 的 Makefile 写法和规则等&#xff0c;和 uboot 的 Makefile 是一样的&#xff0c;甚至 Makefile 中的很多内容都是一样的。 (2) kernel 的 Makefile 比 uboot 的 Makefile 要复杂&#xff0c;这里我们并不会一行一行的详细分析…

【20】核心易中期刊推荐——计算机科学电子通信(EI索引)

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

进阶C语言:文件操作

文件操作不仅仅是我们使用鼠标用来操作文件的各项功能&#xff0c;还可以使用C语言来操作文件的内容&#xff0c;可以使用C语言来对文件的读、写、拷贝...等等&#xff0c;话不多说&#xff0c;直接开始&#xff1a; 目录 1.为什么要使用文件 2.什么是文件 2.1程序文件 2.…

蓝桥杯【第14届省赛】Python B组

本题解不一定正确&#xff0c;欢迎大家指正 A&#xff1a;2023 【问题描述】 请求出在 12345678 至 98765432 中&#xff0c;有多少个数中完全不包含 2023 。 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 。 例如 20322175&#xff0c;33220022 都完全不包…

python实现获取当前目录下的树形结构

python实现获取当前目录下的树形结构 程序实现 在有些Linux上自带了tree命令来一树状结构显示一个目录&#xff0c;但是在有些linux上没有自带这个程序&#xff0c;所以这里用python写了一个小程序来实现这个功能&#xff0c;代码如下&#xff1a; import osdef print_tree(…

共模电感(扼流圈) 差模电感(扼流圈)

共模电感 共模电感&#xff0c;也叫共模扼流圈。常用于电脑的开关电源&#xff0c;过滤共模的电磁干扰信号。 共模电感器由软磁铁芯&#xff08;铁氧体磁芯&#xff09;和两组同相绕制的线圈组成。对于共模信号&#xff0c;由于两组线圈产生的磁场不是抵消。而是相互叠加&…

存量市场之下,电商之战深入腹地且逻辑未变

纵然是在流量依然见顶的大背景下&#xff0c;电商行业的竞争并未结束。无论是以百亿补贴为代表的烧钱策略&#xff0c;还是以跨境出海为代表的规模策略&#xff0c;几乎都是这样一种现象的直接体现。种种迹象表明&#xff0c;未来的电商行业&#xff0c;依然会有新的战役发生。…

Hadoop集群环境搭建与应用回顾

文章目录一、 实训项目名称二、 学习情况小结三、 项目中用到的知识点四、 实训项目中负责功能板块五、 实训项目实现六、 实训项目过程中遇到的问题及解决方法七、实训体会与心得一、 实训项目名称 Hadoop集群环境搭建与应用 二、 学习情况小结 实操一部分&#xff1a; 通…

linux 服务器 docker 安装 nacos 2.0.3

docker 镜像 https://registry.hub.docker.com/r/nacos/nacos-server/tags 1.下载nacos镜像 这里下载的是2.0.3 docker pull nacos/nacos-server:2.0.32.查看镜像是否下载成功 如下图 docker images3.创建文件夹 注&#xff1a; 自定义创建&#xff0c;用于把docker内部的文件…

【基金学习】基金的相关计算题目

文章目录一、基金收益计算1. 累计收益/持有收益2. 年化收益/年化收益率3. 涨跌幅4. 分红二、风险计算1. 贝塔系数2. 波动率三、费用计算1. 托管费2. 管理费3. 销售服务费4. 申购/赎回费一、基金收益计算 1. 累计收益/持有收益 累计收益 持仓金额 - 本金 累计收益率 &#xf…

TCP 的 NACK 与 SACK

可靠传输&#xff0c;一旦丢包&#xff0c;必然 HoL blocking&#xff0c;NACK 和 SACK 必须二选一驱动重传&#xff1a; NACK&#xff1a;receiver 主动通告没有收到的报文&#xff0c;sender 收到后重传。 SACK&#xff1a;receiver 主动通告收到的报文&#xff0c;sender …

一文带你深入了解算法笔记中的前缀与差分(附源码)

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段&#xff0c;因为最近参加新星计划算法赛道(白佬)&#xff0c;所以加快了脚步&#xff0c;果然急迫感会增加动力>——…

笔记本上就能跑的 LLM 好使吗?GPT4ALL 体验

是骡子是马&#xff0c;牵出来遛遛正名看到这个标题&#xff0c;你可能会觉得是噱头。谁不知道 ChatGPT 模型有 1750 亿以上的参数&#xff0c;别说是在笔记本电脑上跑&#xff0c;就是使用高性能 GPU 的台式机&#xff0c;也无法带得动啊。老老实实调用 API 不好吗&#xff1f…

torchvision.transforms 常用方法解析(含图例代码以及参数解释)

本文代码和图片完全源于 官方文档: TRANSFORMING AND AUGMENTING IMAGES 中的 Illustration of transforms&#xff0c;参数介绍源自函数对应的官方文档。 代码中的变换仅仅使用了最简单的参数&#xff1a;pad&#xff0c;size 等&#xff0c;这里展现的只是简单的变换&#xf…

中间表示- 数据流分析

数据流分析往往与优化绑定在一起&#xff0c;如下图所示。 优化的一般模式 程序分析 &#xff08;1&#xff09;控制流分析、数据流分析、依赖分析等。 &#xff08;2&#xff09;得到被优化程序的静态保守信息&#xff0c;是对动态运行行为的近似。 程序重写 以上一步得到…

用于3D分子生成的等变扩散模型ICML2022

现代深度学习方法开始对分子科学产生重要影响。在Alphafold在蛋白质折叠预测方面取得成功的背后&#xff0c;越来越多的工作开发了深度学习模型来分析或合成分子。分子存在于物理3D空间中&#xff0c;因此受制于几何对称性&#xff0c;如平移、旋转。这些对称性被称为三维欧几里…

Compose(?/N) - 标准布局

组合函数不指定布局默认是Box堆叠。 一、纵向 Colum inline fun Column( modifier Modifier, verticalArrangement Arrangement.Top, //子元素纵向排列规则 horizontalAlignment Alignment.Start, //子元素横向排列规则 content: Composable ColumnScope.() -…

蓝桥杯基础12:BASIC-3试题 字母图形

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 利用字母可以组成一些美丽的图形&#xff0c;下面给出了一个例子&#xff1a; ABCDEFG BABCDEF CBABCDE DCBABCD EDC…

【设计模式】设计模式概述以及UML图

设计模式概述以及UML图设计模式概述1. 设计模式的概念2. 学习设计模式的必要性3. 设计模式的分类UML图1. 什么是UML图2. 类图的概念和作用3. 类图的表示法4. 类与类之间的表示方式4.1 关联关系4.2 聚合关系4.3 组合关系4.4 依赖关系4.5 继承关系4.6 实现关系设计模式概述 1. 设…