链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表

bcc28a0a970a583ecd0619125ae289f9.png

从尾到头打印链表

信息卡片

  • 时间:2020-03-23
  • 题目:从尾到头打印链表
  • tag:list

题目描述

输入一个链表,按链表从尾到头的顺序返回一个 ArrayList。

01

调用 reverse 函数

解题思路

这是一种简单粗暴的解法。先遍历一遍链表,在遍历链表的同时将当前指针指向的值放入 vector 数组中,直到链表遍历完成。最后,使用 reverse 函数将 vector 数组进行反转。

public:vector<int> printListFromTailToHead(ListNode* head) {vector<int>ArrayList;if(!head || !head->next)return {};while(head){ArrayList.push_back(head->val);head=head->next;}reverse(ArrayList.begin(),ArrayList.end());return ArrayList;}
};

02

调用 insert 函数

解题思路

与解法一有些类似,依次从前往后遍历链表,在遍历链表的同时,调用 vector 的 insert 函数从头部插入此时链表指针指向的值。最后就得到了一个反转的数组。

class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {vector<int>ArrayList;if(head){ArrayList.insert(ArrayList.begin(),head->val);while(head->next){ArrayList.insert(ArrayList.begin(),head->next->val);head=head->next;}}return ArrayList;}
};

03

调用栈方法

解题思路

创建一个元素为指针类型的栈,来存放链表的指针。在遍历链表的同时将指针入栈,此时栈的底部是链表的第一个元素,栈顶是链表的最后一个元素。弹出栈的时候把指针指向的值放入 vector 数组里面。

class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {stack<ListNode*> stackNodes;vector<int> ArrayList;ListNode* p=head;while (p != NULL){stackNodes.push(p);p = p->next;}while (!stackNodes.empty()){p=stackNodes.top();ArrayList.push_back(p->val);stackNodes.pop();}return ArrayList;}
};

04

递归调用

解题思路

递归的本质就是一个栈结构,可以用递归来实现。要实现反过来输出的链表,我们每访问到一个节点的时候,先递归输出它后面的节点,再输出该节点自身,这样就得到反转的链表。

class Solution {
public:vector<int> printListFromTailToHead(struct ListNode* head) {vector<int> vec;printListFromTailToHead(head,vec);return vec;}void printListFromTailToHead(struct ListNode* head,vector<int> &vec)    {if(head!=nullptr){if(head->next!=nullptr){printListFromTailToHead(head->next,vec);}vec.push_back(head->val);}}
};

总结

解法四递归的方法看起来比较简洁,但是凡事都有利弊,当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。解法一、解法二、解法三要优于解法四。

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

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

相关文章

EntiyFramework :Update model from database引起的两个问题

EntiyFramework一大特点就是Code first&#xff0c;但难免有时候因特殊原因需要Update model from database。此次使用该功能时遇到两个问题&#xff0c;且记之。 [问题一] Error 3027: No mapping specified for the following EntitySet/AssociationSet - XXXXXXX. [起因] 在…

MySQL笔记——JDBC入门

&#xff08;一&#xff09;JDBC简介 JDBC概念&#xff1a;&#xff08;1&#xff09;JDBC就是使用Java语言操作关系型数据库的一套API&#xff08;2&#xff09;全称&#xff1a;&#xff08;Java DataBase Connectivity&#xff09;Java数据库连接&#xff08;二&#xff09;…

Maven笔记——maven下载与配置

&#xff08;一&#xff09;Maven简介 Apache Maven是一个项目管理和构建的工具&#xff0c;它基于项目对象模型&#xff08;POM&#xff09;的概念。通过一小段描述信息来管理项目的构建&#xff0c;报告和文档。○ 项目对象模型○ 依赖管理模型○ 插件• 仓库分类&#xff1a…

Telerik Reporting之生成报表

本文为原创文&#xff0c;难免会有一些小得瑕疵&#xff0c;敬请谅解。所有示例均是博主测试过的&#xff0c;如有转载请标明出处&#xff0c;谢谢。第一步&#xff1a;建立一个普通类库。 第二步&#xff1a;在此类库中&#xff0c;新建项——Telerik Report报表。 第三步&…

Maven笔记——依赖管理

使用坐标导入jar包1) 在pom.xml中编写<dependencies>标签2) 在<dependencies>标签中使用<dependency>引入坐标3) 定义坐标的groupId、artifactId、version<dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->…

android 4.2以上版本永不休眠

android4.2以上版本比android4.2以前的版本framework层框架部分有了很大的改变&#xff0c;androd4.2以前版本framework层给上的接口函数与android4.2以上版本的接口函数也有了些变化&#xff0c;以前让机器永不休眠的方法用在android4.2以上版本已经不起作用了。现将android4.…

Mybatis笔记——Mybatis入门

&#xff08;一&#xff09;MyBatis快速入门 通过一个案例快速入门Mybatis框架案例&#xff1a;查询user表中所有数据1) 创建user表&#xff0c;添加数据2) 创建模块&#xff0c;导入坐标3) 编写MyBatis核心配置文件-->替换连接信息&#xff0c;解决硬编码问题4) 编写SQL映…

POJ-3693 Maximum repetition substring 后缀数组

题目链接&#xff1a;http://poj.org/problem?id3693 求字符串的重复次数最多的且字典序最小的字串。 很不错的题目。罗穗骞大牛论文的模板题&#xff0c;摘了Neo / Add ~0U>>1大牛的详细题解&#xff0c;如下&#xff1a; 首先求第一问最大重复数。从N的范围来看O(N^2)…

python nlp_Python NLP入门教程

本文简要介绍Python自然语言处理(NLP)&#xff0c;使用Python的NLTK库。NLTK是Python的自然语言处理工具包&#xff0c;在NLP领域中&#xff0c;最常使用的一个Python库。 什么是NLP&#xff1f; 简单来说&#xff0c;自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服…

python安装后cmd找不到_关于Python3.6环境中,virtualenv找不到命令的解决方法

今天收到一个网友的提问,说是,已经安装好了,Python3.6,系统环境变量也检查过,没有问题,在系统CMD命令行窗口,输入python可以返回当前安装的python环境的版本号,如下图python3.6 也测试了pip安装程序,也是正常的,然后用pip install virtualenv 安装虚拟环境,整个过程也没有报错,…

Mybatis占位符问题—ReflectionException: There is no getter for property named xxx

使用${}占位符时&#xff08;PS&#xff1a;一般都使用#{}&#xff0c;不建议使用${}&#xff09;&#xff0c;发现xml文件中的SQL语句使用了$后会报错&#xff1a;具体情况如下&#xff1a;解决方案如下&#xff1a;在参数前加上Param("id")注解

kamailio,asteisk,realtime 实现负载均衡(集群)完整配置笔记

环境 负载均衡数据库服务器 Centos-5.4 kamailio-3.1.4 mysql-5.0.77-4.el5_6.6 IP:192.168.1.30 asterisk服务器1 Centos-5.4 asterisk-1.8 IP:192.168.1.31 asterisk服务器2 Centos-5.4 asterisk-1.8 IP:192.168.1.32 目的 1&#xff1a;假设一个简易的asterisk 集…

maven依赖 spark sql_window环境运行spark-xgboost 8.1踩到的坑

在window 环境下使用spark - xgboost会出现一些问题&#xff0c;这里记录一下。环境&#xff1a;window 7 spark 2.31 xgboost 8.1 idea maven一.依赖以及代码数据集下载地址UCI Machine Learning Repository: Iris Data Set​archive.ics.uci.edupom依赖<!-- https://m…

python书籍排行榜前十名_学习Python,这些书你看过几本?

Python是一门简单&#xff0c;强大的计算机编程语言。Python书也是种类繁多&#xff0c;对于初学者选择合适的学习书籍是很有必要的。 1、Python编程&#xff1a;从入门到实践 全书分两部分&#xff1a;第一部分介绍用Python编程所必须了解的基本概念&#xff1b;第二部分将理论…

MyBatis笔记——配置文件完成增删改查

l 完成品牌数据的增删改查操作 要完成的功能列表清单&#xff1a;□ 查询 查询所有数据 查看详情 条件查询□ 添加□ 修改 修改全部字段 修改动态字段□ 删除 删除一个 批量删除准备环境&#xff1a; 数据库表tb_branddrop table if exists tb_brand;CREATE TABLE tb_brand(--…

web——Tomcat Maven插件及Servlet入门

• IDEA中使用Tomcat-Tomcat Maven插件 ○ Pom.xml添加Tomcat插件<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><!--&…

外架小横杆外露长度规范要求_安全文明施工规范

分类规范内容内外架安全1、扫地杆离地0.2米&#xff0c;立杆间距1.5米&#xff0c;外大横杆上下间距1米&#xff0c;内大横杆上下间距1.8米&#xff0c;步距1.8米2、立杆着落点不得悬空&#xff0c;垫块面积&#xff1e;240240mm3、外架和支模架不得连接、固定在一起4、外架操作…

java 邮件模板_Spring Boot 2发送邮件手把手图文教程

点击上方 IT牧场 &#xff0c;选择 置顶或者星标技术干货每日送达&#xff01;本文基于&#xff1a;Spring Boot 2.1.3&#xff0c;理论支持Spring Boot 2.x所有版本。最近有童鞋问到笔者如何用Spring Boot发送邮件&#xff0c;故而整理下Spring Boot发送邮件的各种姿势。说到邮…

Web——Request请求

•Request通用方式获取请求参数 ○ 请求参数获取方式&#xff1a; GET方式&#xff1a;□ String getQueryString() POST方式&#xff1a;□ BufferedReader getReader()○ 通用方式&#xff1a; Map<String, String[]> getParameterMap()//获取所有参数Map集合 String[]…

mfc点击按钮让对话框关闭_WinXP系统开始菜单中关机按钮消失的恢复教程

WinXP系统开始菜单里面的关机按钮不见了怎么办&#xff1f;最近有用户反映&#xff0c;打开WinXP系统的开始菜单准备关机时&#xff0c;却发现无法关机了&#xff0c;开始菜单里面没有关机按钮&#xff0c;这是怎么回事&#xff1f;本文就为大家介绍XP系统恢复开始菜单关机按钮…