题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
思想
- 单链表只能从头到尾遍历,遍历时可以使用容器存储。
- 不知道链表的具体长度,动态数组-》ArrayList存储
- 倒序遍历ArrayList,输出res数组。
语法
ArrayList
// ArrayList是容器,数据类型是包装类型。
初始化:ArrayList<Integer> al == new ArrayList<>()
增:al.add(value)
查:al.get(i)
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
if(head == null)
return new int[0];
ListNode p = head;
// 定义一个数组储存遍历一遍的值
ArrayList<Integer> al = new ArrayList<>();
while(p!=null){
al.add(p.val);
p = p.next;
}
// 逆序输出
int[] res = new int[al.size()];
for(int i = 0; i < al.size(); i++){
res[al.size()-1-i] = al.get(i);
}
return res;
}
}