题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:0 <= 链表长度 <= 10000
参考解题思路:定义一个辅助展,记录一次遍历的节点值和获得节点总个数(数组长度),再遍历这个辅助栈,存入数组
public int[] reversePrint(ListNode head) {
List<Integer> list = new ArrayList<>();
while (head != null) {
list.add(head.val);
head = head.next;
}
int[] array = new int[list.size()];
int length = list.size() - 1;
for (Integer integer : list) {
array[length] = integer;
length--;
}
return array;
}
复杂度分析:
时间复杂度 O(N): 入栈和出栈共使用 O(N) 时间。
空间复杂度 O(N): 辅助栈 stack 和数组 res 共使用 O(N) 的额外空间。