题目描述
题干
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例输入
输入:head = [1,3,2]
输出:[2,3,1]
约束
0 <= 链表长度 <= 10000
思路分析
思路1
利用栈后入先出的性质
思路2
首先遍历整个链表,获得其中元素个数,然后开一个数组从后往前将这些元素填进去即可
代码实现——Java
思路1
public class Solution {
public int[] reversePrint(ListNode head) {
Deque<Integer> stack = new ArrayDeque<>(); // 官方推荐使用Deque替代栈
int count = 0;
while (head != null) {
stack.push(head.val);
count++;
head = head.next;
}
int[] ans = new int[count];
count = 0;
while (!stack.isEmpty()) {
ans[count++] = stack.pop();
}
return ans;
}
}
思路2
public class Solution {
public int[] reversePrint(ListNode head) {
int count = 0;
ListNode temp = head;
while (temp != null) {
count++;
temp = temp.next;
}
int[] ans = new int[count];
for (int i=count-1; i>=0; i--) {
ans[i] = head.val;
head = head.next;
}
return ans;
}
}