劍指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