剑指offer链接:从头到尾打印链表
题目描述
要求:时间限制:1秒 空间限制:32768K
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
前提:ListNode.java
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
方法一:递归实现
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}
运行结果:
运行时间:22ms
占用内存:9324k
方法二:通过stack的先进后出原理实现。
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> res = new ArrayList<>();
while (!stack.empty()) {
res.add(stack.pop());
}
return res;
}
}
运行结果:
运行时间:29ms
占用内存:9324k