剑指offer-3、从尾到头打印链表
题目描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:

返回一个数组为[3,2,1]
0 <= 链表长度 <= 10000
示例1
输入:
{1,2,3}
返回值:
[3,2,1]
示例2
输入:
{67,0,24,58}
返回值:
[58,24,0,67]
思路及解答
⾸先我们需要想⽤哪些解法可以解,⼤概有如下:
- 使⽤栈
- 使⽤递归调⽤
- 头插法
借助栈实现
先把元素⾥⾯的元素从头到尾遍历取出放在栈⾥⾯,然后再把栈的元素去出来放在ArraList ⾥⾯。主要利⽤了栈的先进后出的规则,这样就可以实现倒序的功能。Java 代码实现如下:
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> results = new ArrayList<>();
while (!stack.isEmpty()) {
results.add(stack.pop());
}
return results;
}
}
递归调⽤
前⾯我们能想到栈,那么我们何必⾃⼰实现呢?其实⽅法的调⽤过程,就是⼀个天然的栈调⽤的过程呀,只需要判断当前节点是不是为空,为空则不输出,不为空则递归下⼀个节点,对下⼀个节点处理之后,把结果使⽤ArrayList.addAll() 加到结果中,再把⾃身加到结果中即可:
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> results = new ArrayList<>();
if(listNode!=null){
// 对后⾯的元素进⾏处理
results.addAll(printListFromTailToHead(listNode.next));
// 最后添加⾃身
results.add(listNode.val);
}
return results;
}
}
头插法
遍历每⼀个节点,然后把它插⼊到头部,这样⼀直遍历到尾的时候,就相当于将整个链表都反转⼀遍了,然后再从头到尾遍历放到ArryList 即可。

public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode head = new ListNode(-1);
while(listNode!=null){
// 先把当前node的next保存起来
ListNode temp = listNode.next;
// 把当前节点的next指针指向head的下⼀个节点
listNode.next = head.next;
// 把head的next指向当前节点
head.next = listNode;
// 将遍历的指针指向了遍历的下⼀个元素
listNode = temp;
}
ArrayList<Integer> results = new ArrayList<>();
head = head.next;
// 遍历输出
while(head!=null){
results.add(head.val);
head = head.next;
}
return results;
}
}
剑指offer-3、从尾到头打印链表的更多相关文章
- 《剑指offer》从尾到头打印链表
本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...
- 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...
- 力扣 - 剑指 Offer 06. 从尾到头打印链表.md
题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...
- 【Java】 剑指offer(5) 从尾到头打印链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...
- Go语言实现:【剑指offer】从尾到头打印链表
该题目来源于牛客网<剑指offer>专题. 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. Go语言实现: type ListNode struct { Val int ...
- [剑指Offer] 3.从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. [思路]用一个vector存储,遍历链表时每次从前面插入 /** * struct ListNode { * int val; * struct ...
- [剑指offer]6.从尾到头打印链表+18.删除链表节点
链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...
- 剑指 Offer 06. 从尾到头打印链表
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头 ...
- 剑指offer:从尾到头打印链表
题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”, 因此我 ...
- 剑指Offer 3. 从尾到头打印链表 (链表)
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目地址 https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35 ...
随机推荐
- vue_条件渲染、列表渲染
条件渲染 <html lang="en"> <head> <meta charset="UTF-8"> <title& ...
- 保姆级教程:跟虚竹哥用Gemini-2.5-pro,一步搞定任何内容的思维导图,国内直接使用
零.前言 每一份厚重的报告,每一篇深奥的论文,都像一座等待探索的知识矿山.我们常常深陷于文字的细节中,却迷失了通往宝藏的路径.你是否想过,如果有一张地图,能清晰标示出每一条知识的脉络与连接,这场探索之 ...
- Java开发AI项目,太爽了!LangChain4j保姆级教程
大家好,我是程序员鱼皮.现在 AI 应用开发可以说是程序员必备的技能了,求职时能够大幅增加竞争力.之前我用 Spring AI 带大家做过一个 开源的 AI 超级智能体项目,这次我来带大家快速掌握另一 ...
- 前端开发系列126-进阶篇之Rollup
本文简单介绍类库打包工具 rollup . Rollup 是一款 JavaScript 模块打包器,可以将多个简单的js代码文件编译成一份复杂的js代码文件,需要注意的是 Rollup 主要用于Jav ...
- 图片生成对嘴视频FLOAT
之前已经介绍过图片对嘴生成视频的开源工具: DICE-Talk:https://www.cnblogs.com/cj8988/p/18957718 (带表情,比较慢) ComfyUI_Sonic: ...
- iPaaS 平台在企业中的定位及集成方式
iPaaS 平台在企业中的定位是作为 IT 架构的基础底座能力之一,是构建业务中台的关键组件,同时也为数据中台提供支撑服务.它在企业中承担着连接.集成和管理不同系统.应用程序和数据的重要角色,为企业的 ...
- ETL快速同步 用友u8数据方式
在企业信息化进程中,用友U8作为一款广泛应用的ERP系统,承载着企业核心业务数据.为了实现这些数据的有效利用与深度分析,往往需要通过ETL(Extract, Transform, Load)工具进行快 ...
- Living-Food-自制 养殖:鸡鸭鹅/牛羊鱼 + 种植:蔬菜/蘑菇 + 主食: 米线/米粉
Living-Food-自制 主食: 米线/米粉 养殖:鸡鸭鹅/牛羊鱼 公母混养. 温度.湿度.自然环境(自然土壤.通风透气.采光).野生环境(种子/阳光/水/土壤/空气) 食物:稻谷饲料.红薯.苔藓 ...
- Load text: https://tensorflow.google.cn/tutorials/load_data/text
Tensorflow Load text: This tutorial demonstrates two ways to load and preprocess text. First, you wi ...
- ICEE-Datasheet: 找Datasheet 的好去处DigiKey.com,Mouser.com,Arrow.com, AllDatasheet.com加各大原产商官网
找Datasheet 的好去处: DigiKey,Mouser,Arrow 三家全球最大的电子元器件采购平台,搜索到的元器件页面会有Datasheet可供下载. https://www.digikey ...