【剑指offer】JZ7 重建二叉树、JZ9 用两个栈实现队列
\描述:
给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。
例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。
思路:
题上给了我们前序遍历(根 左 右)和中序遍历(左 根 右),因为前序遍历先遍历根,故可以通过前序遍历确定根,再由中序遍历确定根的左右子树是什么.循环往复(递归),直到整个树构建完成。
题目入口:
点击进入该题
解题步骤:
1.需要递归,题中给的函数无法满足要求,因此我们需要自己创建一个函数(buildTree)。
2.在递归过程中,需要确认根节点的下标,因此我们又需要再创建一个函数(findIndex)。
3.递归需要有结束条件,当instart下标不再大于inend下标时,证明所有的节点都已经归位,因此用instart>inend作为终止递归条件。
代码如下:
public class Solution {int i=0;//根的下标public TreeNode reConstructBinaryTree(int [] pre,int [] vin) {return buildTree(pre,vin,0,vin.length-1);}private TreeNode buildTree(int [] pre,int[] vin,int instart,int inend) {//递归终止条件if(instart>inend) {return null;}int mid=findIndex(vin,instart,inend,pre[i]);TreeNode root=new TreeNode(pre[i]);i++;root.left=buildTree(pre,vin,instart,mid-1);root.right=buildTree(pre,vin,mid+1,inend);return root;}private int findIndex(int[] vin,int instart,int inend,int key) {//找每一个子树的根for(int j=instart;j<=inend;j++) {if(vin[j]==key) {return j;}}return -1;}
JZ9 用两个栈实现队列
描述
用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
思路:
我们知道栈是先进后出,队列是先进先出。 我们可以建立两个栈(stack1,stack2),让他两个一个负责入栈,一个负责出栈,逻辑也简单,
入栈:只需要进一个元素push一个元素就行了。
出栈:队列的话,应该是第一个进入的第一个出去,现在第一个进入的在栈底,故我们需要将栈底的元素挪到栈顶,这就stack1中的所有元素从栈顶全部入到stack2,直到stack1中为空。再将去stack2中的栈顶取出先存起来。因为还有元素会加入到队列当中,故我们需要再将stack2中的元素再次导入stack1。

pop()函数



题目入口
点击进入该题
解题步骤:
1.建立两个栈。
2.将进入的元素都入到stack1,这就完成了push();
3.在pop()函数中倒置stack1与stack2就完成了该函数。
代码如下:
import java.util.Stack;public class Solution {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();public void push(int node) {stack1.push(node);}public int pop() {int tmp=0;while(!stack1.isEmpty()) {tmp=stack1.pop();stack2.push(tmp);}int ret=stack2.pop();while(!stack2.isEmpty()) {tmp=stack2.pop();stack1.push(tmp);}return ret;}}
相关文章:
【剑指offer】JZ7 重建二叉树、JZ9 用两个栈实现队列
\描述: 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 思路: 题上给了我们前序遍历(根 …...
ElasticSearch - SpringBoot整合ES之查询所有 match_all
文章目录1. 数据准备2. 全量查询 match_all3. 使用 boost 参数更改 _score官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search…...
详谈IIC
前言 在嵌入式底层系统中,常见的通讯方式,串口,IIC,SPI,IIS等,一般IIC,SPI,IIS更多的采取IO模拟,其余CAN,UART均是硬件设计直接支持,而IIC主要用于多数传感器数据的读写,…...
【Autoware】采集实验数据bag包并仿真运行
文章目录1. 官方demo包2. 控制底层地图采集3. 感知定位4. 规划控制5. 仿真或实车运行1. 官方demo包 wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_data.tar.gz wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_150324.tar.gz官方示例包的网上…...
名创优品怎么把创意做成生意?
最近,“主”无处不在,从让“依托答辩”梗火出圈的动画《三体》,到备受好评的电视剧《三体》,再到仍在刷新高票房成绩的《流浪地球2》。作为近些年来中国为数不多的爆款IP制造者,刘慈欣在《三体》中提出了一个著名的理论…...
springboot原项目配置文件迁移至nacos
目录一、配置文件迁移nacos1.安装nacos2.添加依赖3.改造service-product3.改造server-gateway一、配置文件迁移nacos 1.安装nacos 1,如果之前安装过nacos,nacos数据保存至mysql,先删除已安装的nacos,再安装 docker stop nacos …...
常用的shell脚步操作
文章目录一、如何开始一个shell脚本?1.基本语法2.变量定义规则二、特色变量1.$n2.$?三、条件判断1.基本语法2.运算符if,for,while四、字符串切割1.从指定位置开始截取从字符串左边开始计数从右边开始计数2.从指定字符(子字符串)开…...
Java on VS Code 2月更新|JUnit 5 并行测试与 Spring Boot 插件的过滤功能
作者:Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎来到我们的二月更新!在此博客中,我们将为您带来与 JUnit 5 并行测试相关的新功能以及用于 Spring Boot Dashboa…...
无线WiFi安全渗透与攻防(三)之Windows扫描wifi和破解WiFi密码
系列文章 无线WiFi安全渗透与攻防(一)之无线安全环境搭建 无线WiFi安全渗透与攻防(二)之打造专属字典 windows下wifi进行扫描和破解 1.wifi扫描 (1).软件介绍 WirelessMon是一款无线网络扫描工具,它可以帮助用户扫描附近的无线信号&…...
Python中的遍历字典的键和值
一、Python的字典在项目的开发过程中,如果遇到有映射关系的内容可以考虑使用Python中的字典进行存储数据,字典中冒号前的数据称为【键】、冒号后的数据称为【值】。二、Python字典的用法2.1、Python的定义#Python字典的定义 字典名称{键1:值1,键2:值2,键…...
三天Golang快速入门—结构体
Struct结构体什么是结构体结构体定义基本实例化new实例化键值对初始化结构体方法和接收者结构体说明结构体方法和接收者值类型和指针类型接收者struct与jsonstruct转json字符串json转structstruct tagTag结构体转化Json字符串Json字符串转成Tag结构体什么是结构体 1.Golang中没…...
日常算法刷题——力扣704
##2023/3/2 刷算法的第一天 针对力扣的704题:本题是二分查找的基本使用!在此需要注意二分查找的基本特点: 1.数列基本有序; 2.数列数据内容不可重复。 此题只需了解二分查找算法的基本概念,无坑可跳。但在力扣上刷题就…...
【服务器数据恢复】VMware虚拟机下的SQL Server数据库数据恢复案例
服务器数据恢复环境: 一台某品牌PowerEdge系列服务器和一台PowerVault系列存储,上层是ESXI虚拟机文件,虚拟机中运行SQL Server数据库。 服务器故障: 机房非正常断电导致虚拟机无法启动。管理员检查虚拟机发现虚拟机配置文件丢失&…...
详解旨在提升EVM底层性能的兼容公链Monad
EVM带来的繁荣2020年以太坊链上DeFi的蓬勃发展使得EVM成为关注焦点,大部分DeFi项目都开始基于以太坊公链,这也使得EVM成为行业的标杆,不少链都加入了EVM大军,比如polygon、BSC、fantom等等,而EVM也使得链上生态进一步繁…...
2023社会工作者证书怎么考 在哪里报名考试
考取社会工作者证需要在网上报名,社工证是证书考试,分为初级、中级和高级三个级别,一般情况下满足报考条件就可以进行报考了,在中国人事考试网上进行报名及缴费。 1考取社会工作者证的流程 1、社工证报名需要登录中国人事考试网&a…...
统计学 类别比变量的判断
文章目录类别比变量的判断一个类别变量的拟合优度检验两个类别变量的独立性检验列联表与 χ2\chi^2χ2 独立性检验应用 χ2\chi^2χ2 检验应该注意的问题两个类别变量的相关度检验φ\varphiφ 系数Cramers VVV 系数列联系数总结类别比变量的判断 一个类别变量的拟合优度检验 …...
2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等
文档抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等 2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等…...
如何在openKylin操作系统上搭建Qt开发环境
一、获取linux系统下的Qt安装包 Qt官网下载地址:https://download.qt.io 国内镜像下载地址:https://mirrors.cloud.tencent.com/qt/ 。建议用镜像下载速度快。集成安装包在 official_releases/qt 目录下,新地址:https://downloa…...
T_SQL和SQL的区别
一. SQL Server和T-SQL的区别(⭐T-SQL 包含了 SQL)SQL Server是结构化查询语言,是目前关系型数据库管理系统中使用最广泛的查询语言T-SQL是标准SQL语言的扩展,是SQL Server的核心,在SQL的的基础上添加了变量,运算符,函数和流程控制等,Microso…...
用Python自己写一个分词器,python实现分词功能,隐马尔科夫模型预测问题之维特比算法(Viterbi Algorithm)的Python实现
☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 代码实现 (3)HMM学习问题:Baum-Welch算法 代码实现(…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

