题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例
输入:head = [1,3,2]
输出:[2,3,1]
思路
- 校验链表,如果为
null
直接return
空数组 - 定义一个
LinkList
存储链表中的val
,定义临时结点temp
指向head
- 遍历链表,直到
temp
为null
,把每个节点的值val
添加进LinkList
中(默认都是添加到最后一个) - 顺序遍历
LinkList
,每次都移除最后一个,并添加到结果数组到当前遍历的索引处,最终返回结果数组
Code
public class Solution {
public int[] reversePrint(ListNode head) {
if (head == null) {
return new int[0];
}
LinkedList<Integer> list = new LinkedList<>();
ListNode temp = head;
while (temp != null) {
list.add(temp.val);
temp = temp.next;
}
int[] result = new int[list.size()];
for (int i = 0; i < result.length; i++) {
result[i] = list.removeLast();
}
return result;
}
}