剑指offer 06-从尾到头打印链表
题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
解题思路
看到倒叙输出,最开始思路是用一个列表记录从头结点开始将每一个节点的值加到列表中然后让列表倒序,再转化为数组输出,很显然这样的效率是很低的。
public int[] reversePrint(ListNode head) {List<Integer> arr = new ArrayList<Integer>();while(head != null){arr.add(head.val);}Collections.reverse(arr);int n = arr.size();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = arr.get(i);}return a;}
看了官方题解采用栈解决的,突然觉得自己好蠢。怎么没想到。
思路是从头到尾将遍历链表然后一个个压到栈中,应为栈的特征是先进后出,正好满足题意的倒序输出,然后我们只要创建一个大小为栈大小的数组,再一个个将栈元素出栈加到数值中就可以了。
public int[] reversePrint(ListNode head) {Stack<ListNode> stack = new Stack<>();while (head != null){stack.push(head);head = head.next;}int size = stack.size();int[] result = new int[size];for (int i = 0; i < size; i++) {result[i] = stack.pop().val;}return result;}
剑指offer 06-从尾到头打印链表相关推荐
- 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java
<LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...
- LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 Ideas 遍历链表,每次在vector的头部insert当前元素值. Code C++ class Solution {public:vector< ...
- 【LeetCode】剑指 Offer 06. 从尾到头打印链表
[LeetCode]剑指 Offer 06. 从尾到头打印链表 文章目录 [LeetCode]剑指 Offer 06. 从尾到头打印链表 一.笨比解法 二.递归法 三.辅助栈法 总结 一.笨比解法 算 ...
- 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】
立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...
- 剑指 Offer 06. 从尾到头打印链表(python3编写)
目录 1.题目描述: 2.方法一:使用栈保存结果 思路: 代码(迭代法): 代码(递归法): 3.方法二:反转链表 思路: 代码: 4.方法三:保存数组,再反转数组 思路: 代码: 5.总结: 1.题 ...
- 剑指offer 06. 从尾到头打印链表
1.问题描述 输入一个链表的头结点,按链表值从尾到头的顺序返回一个ArrayList. 2. 解决思路 由于是反向打印,所以是一个"后进先出"的问题,使用栈来解决,虽然递归的本质就 ...
- Leetcode 240.剑指 Offer 06. 从尾到头打印链表 (每日一题 20210728)
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回).示例 1:输入:head = [1,3,2] 输出:[2,3,1]限制:0 <= 链表长度 <= 10000题目地址:h ...
- 剑指 Offer 06. 从尾到头打印链表(C语言)
*输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000* ...
- 剑指 Offer 06. 从尾到头打印链表(递归、逆置链表、头部动态插入)
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 1000 ...
- 【算法】剑指 Offer 06. 从尾到头打印链表
1.概述 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof 输入一个链表的头节点,从尾到头反过来返回 ...
最新文章
- loj2058 「TJOI / HEOI2016」求和 NTT
- 什么是CUDA编程 统一计算架构
- linux下安装sz/rz命令
- 某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...
- 源自Google、Facebook、Netflix和Cisco的10款开源安全工具很值得回味
- 多视角透析Struts2
- Spread for WinRT 7新功能使用指南
- 唔... 突然发现进入推荐博客了
- VTK:PolyData之CellsInsideObject
- php 不同权限登录界面,PHP中如何实现不同权限进入不同页面_后端开发
- 77岁“核弹老人”,前后半生都令人动容!
- e3是合法浮点数吗_下面4个选项中,均是合法浮点数的选项是?
- 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法 ——转载...
- 解决shiro和quartz2 版本冲突问题
- java创建内部面板类_java-RGB调色面板的实现(事件监听器之匿名内部类)
- 金融大规模毁灭性武器--高频统计套利
- 如何提升微服务的幸福感 | 凌云时刻
- promoter:启动子预测程序(PPPs)软件现状及分析
- android 开机动画制作
- 编程到底难在哪里?—— 《人月神话》阅读分享
热门文章
- String s =new String()分析堆与栈
- 励志生活-英国式选秀带来的启示
- Tomcat优化之配置线程池高并发连接
- 6. PHP bcompiler
- 51. 移除重复脚本(12)
- 2. PHP 编译安装
- 监控linux内存,系统运维|用 Bash 脚本监控 Linux 上的内存使用情况
- transform-origin用于设置变换原点
- [洛谷P4183][USACO18JAN]Cow at Large P
- Java 平衡二叉树和AVL