题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
解题思路:辅助栈
利用栈的特点,后进先出的特点,反转
复杂度分析
时间复杂度:,其中
指的是链表长度。
空间复杂度:,将所有数字全存储二遍
我的代码
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> temp=new ArrayList<>(); // 辅助栈
if(listNode==null) return temp;
ListNode p=listNode;
// 入栈操作
while(p!=null){
temp.add(p.val);
p=p.next;
}
// 结果集
ArrayList<Integer> res=new ArrayList<>();
// 从栈顶开始吐出元素,将元素入结果集
for(int i=temp.size()-1;i>=0;i--){
res.add(temp.get(i));
}
return res;
}
}