输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
思路
主要的思路和LeetCode——21 合并两个有序链表(JAVA)差不多,就是先把单链表转换成ArrayList
,再将其倒着赋给一个新数组并返回即可。
代码
public class Solution {
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ArrayList<Integer> listToArray(ListNode p){
ArrayList<Integer> arrayList = new ArrayList<Integer>();
while(p!=null) {
arrayList.add(p.val);
p = p.next;
}
return arrayList;
}
public int[] reversePrint(ListNode head) {
ArrayList<Integer> arrayList = listToArray(head);
int[] answear = new int[arrayList.size()];
for(int i=arrayList.size()-1, j=0;i>=0&&j<answear.length;i--, j++) {
answear[j] = arrayList.get(i);
}
return answear;
}
}