剑指 offer 面试题精选图解 06 . 从尾到头打印链表

点击上方“图解面试算法”,选择“星标”公众号

重磅干货,第一时间送达

剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第1张图片

今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 06 . 从尾到头打印链表

题目链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/

一、题目描述

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

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

  • 0 <= 链表长度 <= 10000

二、题目解析

链表都是从头读到尾依次访问每个节点,题目要求我们 从尾到头 打印链表,这种逆序的操作很显然可以考虑使用

具有 先入后出 特点的数据结构,那就是

具体操作如下:

  • 入栈: 遍历链表,将各节点值 push 入栈。

  • 出栈: 将各个节点值 pop 出栈,存储于数组并返回。

三、动画描述

四、图片描述

剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第2张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第3张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第4张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第5张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第6张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第7张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第8张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第9张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第10张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第11张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第12张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第13张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第14张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第15张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第16张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第17张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第18张图片 剑指 offer 面试题精选图解 06 . 从尾到头打印链表_第19张图片

五、参考代码

class Solution {
    public int[] reversePrint(ListNode head) {
        Deque stack = new ArrayDeque<>();
        ListNode curNode = head;
        while (curNode != null) {
            stack.addLast(curNode.val);
            curNode = curNode.next;
        }

        int size = stack.size();
        int[] res = new int[size];

        for (int i = 0; i < size; i++) {
           res[i] = stack.removeLast();
        }
        return res;
    }
}

六、复杂度分析

时间复杂度

时间复杂度为 O(N),入栈和出栈共使用 O(N) 时间

空间复杂度

空间复杂度为 O(N),辅助栈 stack 和数组 res 共使用 O(N) 的额外空间。

七、相关标签

  • 链表

  • 栈  

---

由 五分钟学算法 原班人马打造的公众号:图解面试算法,现已正式上线!
接下来我们将会在该公众号上,为大家分享优质的算法解题思路,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

你可能感兴趣的:(剑指 offer 面试题精选图解 06 . 从尾到头打印链表)