题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解法1:
JAVA版,利用stack,先进后出。
import java.util.Collections;
import java.util.Stack; //头文件要注意
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> ans=new ArrayList<>();
Stack<Integer> stack=new Stack<>();
while(listNode!=null){ //这里很重要,如果写成listNode.next 返回的就是null,而不是[]
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.isEmpty()){
ans.add(stack.pop());
}
return ans;
}
}
解法2:
JAVA版,利用printListFromTailToHead,递归实现。
import java.util.Stack; //头文件要注意
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode pNode=listNode;
if(pNode!=null){
list=printListFromTailToHead(pNode.next);
list.add(pNode.val);
}
return list;
}
}