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

题目描述

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

image-20241107204146295

思路分析

解法一:栈(推荐)

核心思路

  • 顺序遍历链表并把节点值压栈。
  • 出栈顺序即为从尾到头的结果。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示链表长度。
  • 空间复杂度:O(n),栈保存所有节点值。
import java.util.ArrayDeque;
import java.util.Deque;

class Solution {
    public int[] reversePrint(ListNode head) {
        Deque<Integer> stack = new ArrayDeque<>();

        while (head != null) {
            stack.push(head.val);
            head = head.next;
        }

        int[] res = new int[stack.size()];
        int i = 0;
        while (!stack.isEmpty()) {
            res[i++] = stack.pop();
        }

        return res;
    }
}
func reversePrint(head *ListNode) []int {
	stack := make([]int, 0)
	for head != nil {
		stack = append(stack, head.Val)
		head = head.Next
	}

	res := make([]int, len(stack))
	for i := 0; i < len(stack); i++ {
		res[i] = stack[len(stack)-1-i]
	}

	return res
}

相似题目

题目 难度 考察点
206. 反转链表 简单 链表
234. 回文链表 简单 栈、双指针
445. 两数相加 II 中等
92. 反转链表 II 中等 链表
剑指 Offer 06. 从尾到头打印链表 简单
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/69382815
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!