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

【问题描述】[简单]

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery使用(八):运动方法

show()、hide()、toggle()参数&#xff1a;null或(duration,easing,callblack)fadeIn()、fadeout()、fadeToggle()、fadeTo()参数&#xff1a;null或(duration,[opacity],easing,callblack)slideDown(),slideUp(),slideToggle()参数&#xff1a;null或(duration,easing,callbla…

服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装

相对于普通PC来说&#xff0c;服务器有很多优点&#xff0c;比如在工作上的效率会比PC高出许多&#xff0c;但也有一些缺点其中的服务器系统的安装有时候缺乏人性化就是原因之一了。第一次安装服务器系统&#xff0c;会遇到很多麻烦&#xff0c;下面&#xff0c;小编就给大家带…

html:(15):用css样式给表格添加边框和caption标签

用css样式&#xff0c;为表格加入边框 Table 表格在没有添加 css 样式之前&#xff0c;是没有边框的。这样不便于我们后期合并单元格知识点的讲解&#xff0c;所以在这一节中我们为表格添加一些样式&#xff0c;为它添加边框。 在右侧代码编辑器中添加如下代码&#xff1a; …

Java集合容器面试题

文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些&#xff1f;List&#xff0c;Set&#xff0c;Map三者的区别&#xff1f;List、Set、Map 是否继承自 Collection 接口&#xff1f;List、Map、Set 三个接口存取元素时&#xff0…

荒野行动服务器维护,荒野行动11月30日维护更新完毕服务器已开放 ! 更新优化内容说明...

荒野行动11月30日服务器维护完了&#xff0c;这里手机乐园寻隐者不遇小编给大家带来了具体的优化和更新的内容&#xff0c;咱们往下看&#xff01;亲爱的荒野精英们&#xff1a;欢迎加入《荒野行动》&#xff0c;享受畅快的射击竞技游戏。我们计划在北京时间11月30日凌晨6-8点&…

html:(16):a标签

使用<a>标签&#xff0c;链接到另一个页面 使用<a>标签可实现超链接&#xff0c;它在网页制作中可以说是无处不在&#xff0c;只要有链接的地方&#xff0c;就会有这个标签。 语法&#xff1a; <a href"目标网址" title"鼠标滑过显示的文本…

html:(17):img标签和表单标签

认识<img>标签&#xff0c;为网页插入图片 在网页的制作中为使网页炫丽美观&#xff0c;肯定是缺少不了图片&#xff0c;可以使用<img>标签来插入图片。 语法&#xff1a; <img src"图片地址" alt"下载失败时的替换文本" title "提…

技嘉服务器主板装系统,技嘉主板bios设置图解教程

BIOS(基本输入/输出系统)是被固化在计算机CMOS RAM芯片中的一组程序&#xff0c;为计算机提供最初的、最直接的硬件控制。正确设置BIOS可大大提高系统性能。技嘉主板bios设置方法是什么&#xff0c;很多人很多时候都需要进入bios设置&#xff0c;对于电脑高手来说&#xff0c;这…

[剑指offer][JAVA]面试题第[07]题[重建二叉树][递归]

【问题描述】[中等] 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如&#xff0c;给出前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a;3/ …

html:(18):文本输入框,密码输入框,文本域

文本输入框、密码输入框 当用户要在表单中键入字母、数字等内容时&#xff0c;就会用到文本输入框。文本框也可以转化为密码输入框。 语法&#xff1a; <form><input type"text/password" name"名称" value"文本" /> </form&g…

文件共享服务器地址格式,文件共享服务器配置

文件共享服务器配置 内容精选换一换提供多个业务节点提供共享的日志输出目录&#xff0c;方便分布式应用的日志收集和管理。业务特点&#xff1a;多个业务主机挂载同一个共享文件系统&#xff0c;并发打印日志。大文件小I/O&#xff1a;单个日志文件比较大&#xff0c;但是每次…

[剑指offer]面试题第[28]题[Leedcode][JAVA][第101题][对称二叉树][队列][递归]

【问题描述】[简单] 给定一个二叉树&#xff0c;检查它是否是镜像对称的。例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \ 3 4 4 3【解答思路】 1. 递归 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public boolean isSymmetric(TreeNod…

html:(19):单选框,复选框,下拉列表框

使用单选框、复选框&#xff0c;让用户选择 在使用表单设计调查表时&#xff0c;为了减少用户的操作&#xff0c;使用选择框是一个好主意&#xff0c;html中有两种选择框&#xff0c;即单选框和复选框&#xff0c;两者的区别是单选框中的选项用户只能选择一项&#xff0c;而复…

[Leedcode][JAVA][第84题][柱状图中最大的矩形][暴力][单调栈]

【问题描述】[困难] 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。以上是柱状图的示例&#xff0c;其中每个柱子的宽度为 1&#xff0c;给定的高度为 […

html:(20):使用下拉框进行多选和使用提交按钮提交

使用下拉列表框进行多选 下拉列表也可以进行多选操作&#xff0c;在<select>标签中设置multiple"multiple"属性&#xff0c;就可以实现多选功能&#xff0c;在 windows 操作系统下&#xff0c;进行多选时按下Ctrl键同时进行单击&#xff08;在 Mac下使用 Comm…

html:(21):重置按钮和label标签

使用重置按钮&#xff0c;重置表单信息 当用户需要重置表单信息到初始时的状态时&#xff0c;比如用户输入“用户名”后&#xff0c;发现书写有误&#xff0c;可以使用重置按钮使输入框恢复到初始状态。只需要把type设置为"reset"就可以。 语法&#xff1a; <i…

[Leedcode][JAVA][第1431题][拥有糖果最多的孩子][暴力][六一儿童节]

【问题描述】[中等] 给你一个数组 candies 和一个整数 extraCandies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子&#xff0c;检查是否存在一种方案&#xff0c;将额外的 extraCandies 个糖果分配给孩子们之后&#xff0c;此孩子有 最多 的糖果…

生产系统服务器是啥意思,生产系统服务器主机名怎么看

生产系统服务器主机名怎么看 内容精选换一换部署组复制的最常见方法是使用多个服务器实例&#xff0c;以提供高可用性。也可以在本地部署组复制&#xff0c;例如出于测试目的。注意:组复制通常部署在多个主机上&#xff0c;因为这样可以确保提供高可用性。本地部署不适用于生产…

html:(22):认识css样式和css的优势

认识CSS样式 CSS全称为“层叠样式表 (Cascading Style Sheets)”&#xff0c;它主要是用于定义HTML内容在浏览器内的显示样式&#xff0c;如文字大小、颜色、字体加粗等。 如下列代码&#xff1a; p{font-size:12px;color:red;font-weight:bold; } 使用CSS样式的一个好处是…

hana-banach定理

1. x1不是X除开G以外所有的空间 2.如果极大元不是全空间的话&#xff0c;根据前面的讨论&#xff0c;还可以延拓&#xff0c;这就和极大矛盾了转载于:https://www.cnblogs.com/china520/p/10388862.html