LeetCode 剑指 Offer 06. 从尾到头打印链表
题目描述

思路分析
解法一:栈(推荐)
核心思路:
- 顺序遍历链表并把节点值压栈。
- 出栈顺序即为从尾到头的结果。
复杂度分析:
- 时间复杂度: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. 从尾到头打印链表 | 简单 | 栈 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!