题目
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路1
最简单的方法,直接按顺序遍历,然后利用Collections函数转置。
import java.util.*;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode node) {
ArrayList<Integer> ans=new ArrayList();
if(node==null)
return ans;
while(node!=null){
ans.add(node.val);
node=node.next;
}
Collections.reverse(ans);
return ans;
}
}
思路2
因为是倒叙输出,所以利用栈的先进后出的特性。
import java.util.*;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode node) {
ArrayList<Integer> ans=new ArrayList();
Stack<Integer> stack=new Stack();
while(node!=null)
{
stack.push(node.val);
node=node.next;
}
while(!stack.isEmpty()){
ans.add(stack.pop());
}
return ans;
}
}
思路三
递归
import java.util.*;
public class Solution {
ArrayList<Integer> ans=new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode node) {
if(node!=null)
{
printListFromTailToHead(node.next);
ans.add(node.val);
}
return ans;
}
}
来源:CSDN
作者:jcjcjcjiangcheng
链接:https://blog.csdn.net/jcjcjcjiangcheng/article/details/104080959