目录
题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
解题思路
实现起来最简单的方法:
- 将链表的每一个元素都存入数组,最后将整个数组逆置就可以。
- 先求出链表的长度,再定义一个长度和链表长度相同的数组,从数组的尾部开始放入链表的每一个元素。
题解
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
//如果链表长度为0,即链表的头指针指向空,那么链表中一个元素也没有
if(head == null){
return new int[0];
}
//如果链表的长度不为0,即链表的头指针指向不为空,那么链表中有若干元素
int size = 0; //size指示链表长度
ListNode temp = head;
while(temp != null){
size++;
temp = temp.next;
}
int[] result = new int[size];
while(head != null){
result[--size] = head.val;
head = head.next;
}
return result;
}
}