【问题描述】[简单]

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]
输出:[2,3,1]限制:
0 < 链表长度 <= 10000

【解答思路】

1. 常规思路
  • 遍历链表 得到链表个数
  • 新建数组 遍历链表复制val
    时间复杂度:O(N) 空间复杂度:O(N)
public int[] reversePrint(ListNode head) {int count = 0;ListNode temp = head;while (temp != null) {count++;temp = temp.next;}int[] res = new int[count];for (int i = count - 1; i > -1; i--) {res[i] = head.val;head = head.next;}return res;}
2. 栈


时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public int[] reversePrint(ListNode head) {LinkedList<Integer> stack = new LinkedList<Integer>();while(head != null) {stack.addLast(head.val);head = head.next;}int[] res = new int[stack.size()];for(int i = 0; i < res.length; i++)res[i] = stack.removeLast();return res;}
}
3. 递归


时间复杂度:O(N) 空间复杂度:O(1)

class Solution {ArrayList<Integer> tmp = new ArrayList<Integer>();public int[] reversePrint(ListNode head) {recur(head);int[] res = new int[tmp.size()];for(int i = 0; i < res.length; i++)res[i] = tmp.get(i);return res;}void recur(ListNode head) {if(head == null) return;recur(head.next);tmp.add(head.val);}
}

【总结】

1.数组是不能使用集合的反转方法的,可以自定义方法实现数组反转
public static int[] reserve( int[] arr ){int[] arr1 = new int[arr.length];for( int x=0;x<arr.length;x++ ){arr1[x] = arr[arr.length-x-1];}return arr1 ;
}
2.ArrayList使用函数反转

3.不建议使用stack

为什么用LinkedList不用Stack
基于 Vector 实现的栈 Stack底层是数组 扩容开销大
Java并不推荐使用java.util.stack来进行栈的操作,而是推荐使用一个双端队列deque
详情链接:https://www.cnblogs.com/cosmos-wong/p/11845934.html

转载链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/solution/mian-shi-ti-06-cong-wei-dao-tou-da-yin-lian-biao-d/

[剑指offer][JAVA]面试题第[06]题[从尾到头打印链表][栈][递归]相关推荐

  1. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

    [问题描述]23.合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4->5,1->3->4,2->6 ] ...

  2. [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]

    [问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...

  3. [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]

    [问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...

  4. [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]

    [问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...

  5. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]

    [问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...

  6. [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]

    [问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...

  7. [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]

    [问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...

  8. [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

    [问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...

  9. [剑指offer][JAVA]面试题第[64]题[求1+2+…+n][逻辑运算符]

    [问题描述][中等] 求 1+2+...+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).输入: n = 3 输出: 6 [解 ...

最新文章

  1. 使用IsLine FrameWork开发ASP.NET程序之一——命名空间与契约概览
  2. 每日一皮:程序员的生存状态 ...
  3. python绘制笑脸-用python绘图
  4. C#调用淘宝API流程整理
  5. C++简单使用priority_queue
  6. esp32树莓派_用 ESP32 制造炫彩 LED 球
  7. jeecg框架日常开发问题解决方法
  8. IPsec   在企业网中的应用
  9. 谷歌为什登不上去github_8个月,从中年Web前端到亚马逊百万年薪软件工程师:GitHub最励志计算机自学教程!...
  10. 运筹优化(四)--线性规划之对偶问题和灵敏度分析
  11. JDBC批处理---(java 对数据库的回滚) .
  12. Java反编译插件Jdclipse导致Eclipse 3.7.2启动崩溃的解决方法
  13. 智慧社区解决方案_智慧社区建设方案——汇新云
  14. Vbox安装虚拟机教程
  15. CentOS利用WebHook实现PHP自动部署Git代码
  16. matlab2021安装教程
  17. @程序员:今日七夕,宜找对象
  18. 二、TensorFlow2.x 基于图像的分类
  19. 什么是sku转载网上,备忘一个业务知识
  20. 创客匠人教您实现流量变现

热门文章

  1. ASP.NET MVC 5 入门教程 (3) 路由route
  2. modbus rtu 协议转DLT645-2007和DLT645-1997电表协议转换器定制,
  3. php,Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes)
  4. 如何在textarea中显示html代码
  5. c语言中listempty函数,list_empty()和list_empty_careful()
  6. Android获取屏幕尺寸,屏幕适配
  7. jsp调用struts,jsp调用action,action获取表单提交的参数
  8. java实现map和object互转
  9. flex 点击空格键会有以前点击过的事件的保留
  10. .net关于app.config的使用 对于自己的类库