剑指offer 06.从头到尾打印链表
题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例1:
输入:head = [1,3,2] 输出:[2,3,1]
思路与解法(一)——栈
栈的特点是先入后出,可以将链表从头结点到尾结点依次入栈,然后依次出栈,保存下来。
class Solution {
public int[] reversePrint(ListNode head) {
Stack<ListNode> stack = new Stack<>();
ListNode temp = head;
while (temp != null) {
stack.push(temp);
temp = temp.next;
}
int size = stack.size();
int[] res = new int[size];
for (int i = 0; i < size; i++) {
res[i] = stack.pop().val;
}
return res;
}
}
复杂度分析
时间复杂度:O(N),从头到尾遍历链表。 空间复杂度:O(N),额外使用一个数组保存结果。
|