JZ56从头到尾打印链表
题目来源从尾到头打印链表_牛客题霸_牛客网
描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1],0<=链表长度<=10000
我的解答:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {vector<int> a;stack<int> s;for(head;head!=nullptr;head=head->next){s.push(head->val);}for(s;!s.empty();s.pop()){cout<<s.top();a.push_back(s.top());}return a;}
};
可以看出我的结果并不是很好,因为我首先将链表保存到了一个stack中,然后再将stack中的数据保存到结果的vector中。因为这个是让反向传输,所以我用堆栈进行了转换。
标准解答:
题目中给出了一种简单粗暴的解答方法,直接采用reverse函数(这个函数是C++中提出的,在C中没有,可以用来转换vector,string等,需要包含头文件:#include<algorithm>,其用来反转[first,last)的数据。)
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:vector<int> printListFromTailToHead(ListNode* head) {vector<int> ans;// 从头节点开始进行遍历while(head){// 将每个节点的权值放入动态数组里面ans.push_back(head->val);// 指针后移动head=head->next;}// 反转整个数组reverse(ans.begin(),ans.end());return ans;}
};
可以看到时间会提升一点点,但是其实复杂度还是O(n);O(n)
(如果有更好的方法,感谢讨论~)
JZ56从头到尾打印链表相关推荐
- 《剑指offer》--二维数组中的查找、从头到尾打印链表、重建二叉树、旋转数组的最小数字
一.二维数值中的查找: 1.题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数 ...
- 从头到尾打印链表c++_从头到尾创建一个C#应用程序-完整的24小时课程
从头到尾打印链表c++ In this comprehensive, 24-hour-long course from Tim Corey, you will learn to use C# to b ...
- Java从头到尾打印链表
Java从头到尾打印链表 /*** @author kegekeqi* @version 1.0* @date 2021-12-5 14:18*/ public class ListNode {int ...
- 剑指offer 从头到尾打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 解决办法: import java.util.ArrayList; public class Solution {public ArrayLis ...
- 剑指offer三从头到尾打印链表
一.题目: 输入一个链表,从尾到头打印链表每个节点的值. 二.解题方法: 方法一:采用递归的方式实现 方法二:借助堆栈的"后进先出"实现 import java.util.Arra ...
- JZ3 从头到尾打印链表
描述 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 示例1 输入:{1,2,3} 返回值:[3,2,1] 示例2 输入:{67,0,24,58} 返回值:[58,24,0 ...
- 从头到尾打印链表(Java实现)
问题描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 利用栈"先入后出"的特性. 代码实现: /** * public class ListNode ...
- 【剑指offer-Java版】05从尾到头打印链表
从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...
- 《剑指offer》刷题——【链表】从尾到头打印链表
<剑指offer>刷题--[链表]-<从尾到头打印链表> 问题分析: 递归实现: 1. 无返回值 2. 有返回值(ArrayList) 问题分析: 从头到尾打印链表比较简单,那 ...
最新文章
- 软件质量没有银弹:阿里巴巴的25个技术实践与坑
- 算法 求两个自然数的最小公倍数 C
- No module named 'torch._C'
- 菜鸟学C语言(五)之求定积分
- linux system查看内存占用,Linux查看系统内存占用
- button按钮样式_各种好看的小按钮合集,纯css编写,最近在学习时遇到的,记录成为笔记...
- 正则表达式re.S的用法
- win7 oracle数据库删除用户名,图文帮你win7系统删除Oracle数据库中的用户的具体方法...
- coolfire黑客入门教程系列之(八)最后部分!
- kali 邮箱攻击_利用Kali linux制作钓鱼网站
- 拼多多店铺等级怎么提升?店盈通来告诉你
- ArcMap进行地图标注与注记
- python从srt文件中只提取歌词
- Python Pandas 行数据筛选方法汇总
- golang中的字符串
- Unity - 搬砖日志 - 打开项目时崩溃/或是运行不起unity的日志
- openstack-nova-api源码剖析1
- JSP常用标记——(web基础学习笔记)
- html怎么把图片做成抖动效果,CSS图片抖动和JS点击特效
- linux ps命令 详细介绍