文档章节

面试题 06:从尾到头打印链表

O
 Oaki
发布于 02/18 22:55
字数 343
阅读 73
收藏 0

题目描述

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

思路

思路一

用栈来保存需要输出的节点值。

直接遍历链表,把遍历到的值放入栈中,因为栈的特点,当遍历到链表尾后,栈最上面的节点值就是最后个节点值。

然后再依次放入 list 中,最后返回。

思路二

直接通过递归的方式,先递归到最后一个,然后将数字放入 list 中。

缺点就是,如果链表太长,那就可能导致堆栈溢出。

代码

  • 思路一
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<>();

        if (listNode == null) {
            return list;
        }

        Stack<Integer> stack = new Stack<>();

        // 遍历链表,放入栈中
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }

        // 弹栈
        while (!stack.isEmpty()) {
            list.add(stack.pop());
        }

        return list;
    }
}
  • 思路二
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list = new ArrayList<>();
        return printListFromTailToHead(listNode, list);
    }

    private ArrayList<Integer> printListFromTailToHead(ListNode listNode, ArrayList<Integer> list) {
        if (listNode == null) {
            return list;
        }

        printListFromTailToHead(listNode.next, list);
        list.add(listNode.val);
        return list;
    }
}

© 著作权归作者所有

O
粉丝 0
博文 49
码字总数 22727
作品 0
私信 提问
加载中

评论(0)

《剑指offer》面试题6:从尾到头打印链表

简单的单向链表: 面试题6:从尾到头打印链表 面试题18:删除链表节点 面试题22:链表中倒数第k个节点 面试题24:“反转链表” 面试题25:“合并两个排序的链表” 面试题52:两个链表的第一个...

努力努力再努力吖
03/31
0
0
链表面试题(上)

一、题目 1、从尾到头打印单链表 (有四种方法) 2、删除一个无头单链表的非尾节点(不能遍历链表) 3、在无头单链表的一个节点前插入一个节点(不能遍历链表) 4、单链表实现约瑟夫环(Joseph...

qq_38646470
2018/01/04
0
0
Leetcode刷题笔记 - 《剑指Offer》面试题06 - 从头到尾打印链表

从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2]输出:[2,3,1] 限制: 我的思路: 先从头到尾遍历链表,将链表节点...

李橙皮er
04/03
0
0
剑指Offer_6_从尾到头打印链表

题目描述 输入应该链表的头节点 , 从尾到头反过来打印出每个节点的值。链表定义如下 : 1 typedef struct ListNode2 {3 int m_nKey ;4 ListNode * m_pNext ;5 }ListNode;   分析:     ...

奶berber
2017/12/05
0
0
[转]剑指offer之Java源代码

一、引言 《剑指offer》可谓是程序猿面试的神书了,在面试中帮了我很多,大部分面试的算法题都会遇到原题或者是类似的题。但是书上的代码都是C版的,我在这里整理了一份Java版的代码供大家学...

DarrenChan陈驰
2018/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何从Joomla垃圾箱中删除文章

Joomla允许您删除文章,但是除非您采取其他步骤,否则它不会永久删除它们。 Joomla的垃圾桶类似于PC和Mac的垃圾桶。将项目发送到垃圾桶是可以撤消的操作。 在这个简短的教程中,我将向您展示...

六艺网络专注于Joomla
44分钟前
37
0
图解kubernetes命令执行核心实现

K8s中的命令执行由apiserver、kubelet、cri、docker等组件共同完成, 其中最复杂的就是协议切换以及各种流拷贝相关,让我们一起来看下关键实现,虽然代码比较多,但是不会开发应该也能看懂,祝你...

8小时
49分钟前
29
0
sh和bash之间的区别 - Difference between sh and bash

问题: When writing shell programs, we often use /bin/sh and /bin/bash . 在编写shell程序时,我们经常使用/bin/sh和/bin/bash 。 I usually use bash , but I don't know what's the d......

技术盛宴
今天
39
0
spring - 使用profile来管理环境信息

程序一般都会有开发环境、测试环境以及线上环境,这些环境下程序运行依赖的基础一般不同,例如在有数据源访问的程序中,开发时可能使用了嵌入式数据库,而到测试环境上会使用独立的mysql,正...

閒散人員
今天
21
0
如何实现项目流程自动化

多人协作复杂的任务,团队成员间的分工和沟通就非常必要。现在Zoho projects 项目管理软件中,配合使用蓝图功能,讲让工作事半功倍。 蓝图功能可以解决繁琐的邮件沟通问题,并使任务更加有序...

Zoho云服务
今天
37
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部