输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
// 方法1 使用循环变量 反转链表,然后遍历一次链表获取数组
int length = 0;
ListNode curr = head; // 循环变量
ListNode prev = null; // curr的前一个节点
ListNode next = null; // curr的后一个节点
while(curr!=null){
next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
length++;
}
// prev 变成头节点
int[] arr = new int[length];
int index = 0;
while(prev!=null){
arr[index++] = prev.val;
prev = prev.next;
}
return arr;
}
}
note:链表为空的时候返回空数组
return new int[0];