0
点赞
收藏
分享

微信扫一扫

剑指pffer 06. 从尾到头打印链表

松鼠树屋 2023-01-28 阅读 85

1.题目

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。


2.代码

方法一:

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
//定义一个集合储存链表里的值
List<Integer> list = new ArrayList<>();
while(head!=null){
list.add(head.val);
head = head.next;
}
//把集合里的值倒着存到数组里面
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++){
arr[i] = list.get(list.size()-1-i);
}
return arr;

}
}



方法二:递归

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
//定义一个集合,给递归的时候存进去
List<Integer> list = new ArrayList<>();
public int[] reversePrint(ListNode head) {
recur(head);//这个步骤完成之后,就把链表里的全部值都添加成功了
//再把集合的元素倒着添加进去
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++){
arr[i] = list.get(list.size()-1-i);
}
return arr;


}
void recur(ListNode head){
if(head==null){//递归的出口
return;
}
list.add(head.val);//把当前的值添加到集合中
recur(head.next);//递归,下一个值,移动指针

}
}

举报

相关推荐

0 条评论