题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
1.使用头插法
定义一个ArrayList,当链表不为空的时候,利用ArrayList里面的add(index,value)方法每次都在ArrayList的头部插入节点
时间复杂度:O(n)
空间复杂度:O(n)
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
while(listNode != null){
list.add(0,listNode.val);
listNode = listNode.next;
}
return list;
}
}
2.递归法
例如:要想从尾到头打印链表1->2->3,可以先从尾到头打印2->3,再打印1,以此类推即可
时间复杂度:O(n)
空间复杂度:O(n)
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode != null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}