🚩传送门:牛客题目
力扣题目

题目

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2] 输出:[2,3,1]

解题思路:辅助栈

利用栈的特点,后进先出的特点,反转

复杂度分析

时间复杂度:[NC]265. 从尾到头打印链表 - 图1,其中 [NC]265. 从尾到头打印链表 - 图2 指的是链表长度。

空间复杂度:[NC]265. 从尾到头打印链表 - 图3,将所有数字全存储二遍

我的代码

  1. public class Solution {
  2. public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
  3. ArrayList<Integer> temp=new ArrayList<>(); // 辅助栈
  4. if(listNode==null) return temp;
  5. ListNode p=listNode;
  6. // 入栈操作
  7. while(p!=null){
  8. temp.add(p.val);
  9. p=p.next;
  10. }
  11. // 结果集
  12. ArrayList<Integer> res=new ArrayList<>();
  13. // 从栈顶开始吐出元素,将元素入结果集
  14. for(int i=temp.size()-1;i>=0;i--){
  15. res.add(temp.get(i));
  16. }
  17. return res;
  18. }
  19. }