输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
- 思路1:顺序遍历 逆序赋值放入数组。
public class Solution {
public int[] reversePrint(ListNode head){
//思路1 顺序遍历 但逆序赋值存在数组中
ListNode cur=head;
int count=0;
while(cur!=null){
count++;
cur=cur.next;
}
int[] array=new int[count];
cur=head;
for (int j=count-1;j>=0;j--){
array[j]=cur.val;
cur=cur.next;
}
return array;
}
}
- 思路2:利用栈的"先进后出"的思想。
public class Solution {
public int[] reversePrint(ListNode head){
//思路2 利用栈的“先进后出”
Stack<ListNode> stack=new Stack<ListNode>();
ListNode cur=head;
while (cur!=null){
stack.push(cur);
cur=cur.next;
}
int size=stack.size();
int[] array=new int[size];
for (int j=0;j<size;j++){
array[j]=stack.peek().val;
stack.pop();
}
return array;
}
}