1、不使用栈
public int[] reversePrint(ListNode head) {
//先获取链表长度,创建对应长度数组
ListNode currNode = head;
int len = 0;
while(currNode != null){
len ++;
currNode = currNode.next;
}
int[] result = new int[len];
//再次遍历链表,将值倒序填充至结果数组
currNode = head;
while(currNode != null){
result[len - 1] = currNode.val;
len --;
currNode = currNode.next;
}
return result;
}
2、使用栈
class Solution {
public int[] reversePrint(ListNode head) {
// null
//1
//3 > 2 > 4 > 5
// 0n 0n %%%
if (head == null){
return new int[]{};
}
Deque<Integer> dq = new ArrayDeque<>();
while (head != null){
dq.push(head.val);
head = head.next;
}
int n = dq.size();
int[] result = new int[n];
for (int i = 0; i < n;i++){
result[i] = dq.pop();
}
return result;
}
}