题目描述
输入一个链表,从尾到头打印链表每个节点的值。
测试用例:
{67,0,24,58}
对应输出应该为:
[58,24,0,67]
1.使用递归,但是此方法不适用于长链表。
import java.util.ArrayList;
public class Test1 {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if (listNode!=null) {
this.printListFromTailToHead(listNode.next);//此处递归至最后一值。
arrayList.add(listNode.val);//将各递归结果依次传入ArrayList
}
return arrayList;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
2.利用栈的“后进先出”的特点来实现从尾部打印:
import java.util.ArrayList;
import java.util.Stack;
public class Test1 {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<Integer>();
while (listNode!=null) {
stack.push(listNode.val);
listNode = listNode.next;
}
while(!stack.isEmpty()){
arrayList.add(stack.pop());//取出栈头的值,即尾部。加入ArrayList。
}
return arrayList;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
测试结果:
第一种:22ms
第二种:18ms

5714

被折叠的 条评论
为什么被折叠?



