资讯专栏INFORMATION COLUMN

剑指offer【6】:从尾到头打印链表

Kahn / 3110人阅读

题目

输入一个链表的头节点,从尾到头反过来打印出每个节点的值。

解题思路 一、栈

第一个遍历的节点最后一个输出,而最后一个比遍历到的节点第一个输出(后进先)

    public static ArrayList printListFromTailToHead(ListNode listNode){
        ArrayList list = new ArrayList<>();
        Stack stack = new Stack<>();
        while(listNode != null){
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        while(!stack.empty()){
            list.add(stack.pop());
        }
        return list;
    }
二、递归(重点理解)
    public ArrayList printListFromTailToHead(ListNode listNode) {
    ArrayList ret = new ArrayList<>();
    if (listNode != null) {
        ret.addAll(printListFromTailToHead(listNode.next));
        ret.add(listNode.val);
    }
    return ret;
}
    public static void test2(ListNode node){
        if(node != null){
            if(node.next != null){
                test2(node.next);
            }
        }
        System.out.println(node.val);
        
    }
总结

当链表非常长时,常用递归的方法会导致函数调用的层级很深,从而有可能导致函数调用栈溢出,显然用栈基于循环实现的代码鲁棒性更好。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75525.html

相关文章

  • 剑指offer系列——剑指 Offer 06. 从尾到头打印链表(C语言)

    摘要:导航小助手剑指从尾到头打印链表题目详情解题思路源代码总结剑指从尾到头打印链表题目详情输入一个链表的头节点,从尾到头反过来返回每个节点的值用数组返回。时间复杂度方法先反转链表并求长度,在将反转后的链表数据拷贝至数组中。 ...

    DevTTL 评论0 收藏0
  • 剑指offer】3.从尾到头打印链表

    摘要:题目描述输入一个链表,按链表值从尾到头的顺序返回一个。最后别忘了,从尾到头遍历链表,不要忘了将你的结果进行翻转。 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 分析 要了解链表的数据结构: val属性存储当前的值,next属性存储下一个节点的引用。 要遍历链表就是不断找到当前节点的next节点,当next节点是null时,说明是最后一个节点,停止遍历。 最...

    graf 评论0 收藏0
  • #yyds干货盘点#剑指 Offer 06. 从尾到头打印链表

    摘要:题目输入一个链表的头节点,从尾到头反过来返回每个节点的值用数组返回。 题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0

    SQC 评论0 收藏0
  • 剑指Offer(Java版) 持续更新中

    摘要:面试题从尾到头打印链表输入一个链表,从尾到头打印链表每个节点的值面试题重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。例如输入前序遍历序列和中序遍历序列,则重建二叉树并返回。队列中的元素为类型。其中负数用补码表示。 面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] arra...

    justCoding 评论0 收藏0
  • 利用PHP实现《剑指 offer》之链表(数据结构与算法实战 )

    摘要:一定要认真看分析注释题目要求题目描述输入一个链表,从尾到头打印链表每个节点的值。分析因为链表只有知道当前结点才能知道下一结点,所以不可能直接从后往前打印。 一定要认真看 分析 | 注释 | 题目要求 Question 1 题目描述:输入一个链表,从尾到头打印链表每个节点的值。 分析:因为链表只有知道当前结点才能知道下一结点,所以不可能直接从后往前打印。这种逆序的算法(策略)我们常用栈这...

    hiYoHoo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<