题目描述(2020-11-25)
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:head = [1,3,2]
输出:[2,3,1]
0 <= 链表长度 <= 10000
解题思路
- 链表的值不为空,则将值存入一个列表中,同时计算链表的长度;
- 开辟一个新数组,将列表的顺序值存入数组的逆序值,并返回。
参考代码
class Solution {
public int[] reversePrint(ListNode head) {
//定义一个列表
List<Integer> arrayList = new ArrayList<>();
int len = 0;
//循环节点不为空
while (head!=null){
//链表长度
len++;
//将节点值添加到列表中
arrayList.add(head.val);
//头节点指向下一个节点
head = head.next;
}
//定义一个与链表长度相同的数组
int[] res = new int[len];
//遍历列表
for (Integer list : arrayList) {
res[--len] = list;
}
//返回数组
return res;
}
}
运行结果
执行耗时:1 ms,击败了72.39% 的Java用户
内存消耗:39.1 MB,击败了74.99% 的Java用户