题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
1、分析
对于从尾到头的涉及到先后顺序的问题,首先想到的是使用栈或者队列来解决。其次,也可以采用递归的方式来进行处理,注意递归的时候需要定义一个全部变量。
2、代码
(1)栈
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> result = new ArrayList<Integer>();
while(!stack.isEmpty()){
int tem = stack.pop();
result.add(tem);
}
return result;
}
}
(2)递归
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode != null){
printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}