题目来源从尾到头打印链表_牛客题霸_牛客网

描述

输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。

如输入{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从头到尾打印链表相关推荐

  1. 《剑指offer》--二维数组中的查找、从头到尾打印链表、重建二叉树、旋转数组的最小数字

    一.二维数值中的查找: 1.题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数 ...

  2. 从头到尾打印链表c++_从头到尾创建一个C#应用程序-完整的24小时课程

    从头到尾打印链表c++ In this comprehensive, 24-hour-long course from Tim Corey, you will learn to use C# to b ...

  3. Java从头到尾打印链表

    Java从头到尾打印链表 /*** @author kegekeqi* @version 1.0* @date 2021-12-5 14:18*/ public class ListNode {int ...

  4. 剑指offer 从头到尾打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 解决办法: import java.util.ArrayList; public class Solution {public ArrayLis ...

  5. 剑指offer三从头到尾打印链表

    一.题目: 输入一个链表,从尾到头打印链表每个节点的值. 二.解题方法: 方法一:采用递归的方式实现 方法二:借助堆栈的"后进先出"实现 import java.util.Arra ...

  6. JZ3 从头到尾打印链表

    描述 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 示例1 输入:{1,2,3} 返回值:[3,2,1] 示例2 输入:{67,0,24,58} 返回值:[58,24,0 ...

  7. 从头到尾打印链表(Java实现)

    问题描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 利用栈"先入后出"的特性. 代码实现: /** * public class ListNode ...

  8. 【剑指offer-Java版】05从尾到头打印链表

    从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...

  9. 《剑指offer》刷题——【链表】从尾到头打印链表

    <剑指offer>刷题--[链表]-<从尾到头打印链表> 问题分析: 递归实现: 1. 无返回值 2. 有返回值(ArrayList) 问题分析: 从头到尾打印链表比较简单,那 ...

最新文章

  1. 软件质量没有银弹:阿里巴巴的25个技术实践与坑
  2. 算法 求两个自然数的最小公倍数 C
  3. No module named 'torch._C'
  4. 菜鸟学C语言(五)之求定积分
  5. linux system查看内存占用,Linux查看系统内存占用
  6. button按钮样式_各种好看的小按钮合集,纯css编写,最近在学习时遇到的,记录成为笔记...
  7. 正则表达式re.S的用法
  8. win7 oracle数据库删除用户名,图文帮你win7系统删除Oracle数据库中的用户的具体方法...
  9. coolfire黑客入门教程系列之(八)最后部分!
  10. kali 邮箱攻击_利用Kali linux制作钓鱼网站
  11. 拼多多店铺等级怎么提升?店盈通来告诉你
  12. ArcMap进行地图标注与注记
  13. python从srt文件中只提取歌词
  14. Python Pandas 行数据筛选方法汇总
  15. golang中的字符串
  16. Unity - 搬砖日志 - 打开项目时崩溃/或是运行不起unity的日志
  17. openstack-nova-api源码剖析1
  18. JSP常用标记——(web基础学习笔记)
  19. html怎么把图片做成抖动效果,CSS图片抖动和JS点击特效
  20. linux ps命令 详细介绍

热门文章

  1. Python的运算符
  2. 简单的理解FFT变换
  3. 专题测试02·一元函数微分学【李艳芳全程班】
  4. 官宣:腾讯WeTest明星工具-PerfDog面向全球发布!
  5. PC电脑桌面端UI设计规范
  6. 13.4 掩膜的使用
  7. 可以给我个创业的建议吗?
  8. Excel导入导出(导出有两种方式:直接返回流、返回下载地址)
  9. 【专题】2022中国新能源汽车发展趋势白皮书报告PDF合集分享(附原数据表)
  10. 单例模式——懒汉式和饿汉式详解