题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
这题不会做。对链表概念不熟悉
官方解法1:递归
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;
}
}
官方解法2:
一直在0位置添加链表元素,使其实现类似于栈的功能
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer>list = new ArrayList<Integer>();
ListNode tem = listNode;
while(tem != null){
list.add(0,tem.val);
tem = tem.next;
}
return list;
}
}
官方解法3:使用栈
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer>list = new ArrayList<>();
Stack<Integer>s = new Stack<>();
while(listNode != null){
s.push(listNode.val);
listNode = listNode.next;
}
while(!s.empty()){
list.add(s.pop());
}
return list;
}
}