剑指 Offer:06. 从尾到头打印链表

简介: 剑指 Offer:06. 从尾到头打印链表

1. 题目

剑指 Offer 06. 从尾到头打印链表


2. 描述

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


示例 1:


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


输出: [2,3,1]


限制:


0 <= 链表长度 <= 10000


3. 实现方法

3.1 方法 1

3.1.1 思路

借助栈的特点,先进后出,我们只需要将链表的元素存入栈中,然后从栈中取出元素,此时取出的顺序就是按照链表元素存入的反序;

此时将栈中取出的元素存入列表中返回即可;

主要进行取出链表元素并入栈,此时时间复杂度为 O ( n ) O(n)O(n),n nn 为链表元素个数;

然后进行出栈并存入操作,此时时间复杂度为 O ( n ) O(n)O(n);

最终的时间复杂度为 O ( n ) + O ( n ) = 2 O ( n ) O(n) + O(n) = 2O(n)O(n)+O(n)=2O(n),即 O ( n ) O(n)O(n);

3.1.2 实现

public int[] reversePrint(ListNode head) {
    // 利用栈来存储链表元素,由于是先进后出的数据结构,所以从头到尾存储链表元素,最后出栈时即为从尾到头打印链表元素
    Stack<Integer> stack = new Stack<>();
    // 入栈
    while (head != null) {
        stack.push(head.val);
        head = head.next;
    }
    int[] ans = new int[stack.size()];
    // 出栈并存储到数组中
    for (int i = 0; i < ans.length; i++) {
        ans[i] = stack.pop();
    }
    return ans;
}
目录
相关文章
|
6天前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
15 0
|
2月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
48 5
|
2月前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
38 4
|
5月前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
5月前
【一刷《剑指Offer》】面试题 16:反转链表
【一刷《剑指Offer》】面试题 16:反转链表
|
5月前
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
|
5月前
|
机器学习/深度学习
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
|
5月前
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
|
5月前
剑指 Offer 18. 删除链表的节点
剑指 Offer 18. 删除链表的节点
41 0
|
4月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表