题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
解题思路
1.题目要求我们从尾到头反过来返回每个节点的值,这道题我们可以用栈去解决,但是我们还可以采用另一种方法。就是我们可以新建一个数组,然后去遍历我们的链表,将量表中元素倒着放入数组中
2.首先我们先设置一个 count 变量去计算出链表的长度,新建一个与链表长度相同的链表,然后我们去遍历数组,将遍历到的第一个元素放入链表中的倒数第一位,第二个元素放入链表中的倒数第二位,以此类推,直到遍历完整个链表。这时数组中存储的就是原链表的倒叙了,我们直接返回即可。
代码实现
class Solution {
public int[] reversePrint(ListNode head) {
if(head == null){
return new int[0];
}
int count = 0;
ListNode temp = head;
while(temp != null){
count++;
temp = temp.next;
}
int[] arr = new int[count];
int k = arr.length - 1;
while(head != null){
arr[k--] = head.val;
head = head.next;
}
return arr;
}
}
测试结果