剑指offer(4)

《剑指Offer》第二版源代码(Java实现+JUnit4测试) 文章目录《剑指Offer》第二版源代码(Java实现+JUnit4测试)代码地址运行环境软件架构 《剑指Offer》第二版源代码(Java实现+JUnit4测试) 代码地址 地址:program 说明:将代码 Fork 到自己的 gitee 中,使用Web IDE查看会极度舒适! 运行环境 jdk 1.8_0_251 Intellij IDEA 2019.3 软件架构 main.java.com.cty: Java实现 Base:面试需要的基础知识 面试题2:实现Singleton模式 阅读详情

剑指offer(4)

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

二叉树有三种遍历方法,分别是:前序、中序、后序遍历。首先,我们看看前序、中序、后序遍历的特性: 
前序遍历: 
    1.访问根节点 
    2.前序遍历左子树 
    3.前序遍历右子树 
中序遍历: 
    1.中序遍历左子树 
    2.访问根节点 
    3.中序遍历右子树 
后序遍历: 
    1.后序遍历左子树 
    2.后序遍历右子树 
    3.访问根节点

因此,由前序遍历的特性可知,其第一个元素1一定是整个树的根节点;同时根据中序遍历的特性可知,在中序遍历的序列中,处于1这个根节点的左边的元素4,7,2都是其左子树,右边的序列5,3,8,6为右子树。

然后对于左子树和右子树分别递归重建,例如,左子树的前序遍历为2,4,7,中序遍历为4,7,2;右子树的前序遍历为3,5,6,8,中序遍历为5,3,8,6。最后可以重建此树。

下面贴上基于python的代码:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if(len(pre)==0):
            return None
        elif(len(pre)==1):
            return TreeNode(pre[0])
        node = TreeNode(pre[0])
        node.left = self.reConstructBinaryTree(pre[1:tin.index(pre[0])+1],tin[0:tin.index(pre[0])])
        node.right = self.reConstructBinaryTree(pre[tin.index(pre[0])+1:],tin[tin.index(pre[0])+1:])
        return node


C++版 - 剑指offer 面试题4: 替换空格 题解 面试题4:替换空格 参与人数:10327 时间限制:1秒 空间限制:32768K 本题知识点:字符串 题目描述 请实现一个函数void replaceSpace(char *str,int length),将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析: 阅读详情

相关推荐

算法-leetcode-剑指offer上的题很多

非常好的算法书,讲解很详细,有C++/JAVA/Python代码,很多都是leetcode上的题解,非常高清,值得下载,如果很好,请给好评,让更多人看到节约他们找资料的时间,谢谢。

剑指offer

链表(LinkedList): 003(06)-从尾到头打印链表 ==要求:==输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 方法:栈 栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中。 ​ 创建一个栈,用于存储链表的节点 ​ 创建一个指针,初始时指向链表的头节点 ​ 当指针指向的元素非空时,重复下列操作: ​ 将指针指向的节点压入栈内 ​ 将指针移到当前节点的

reddy528的博客 568

谷歌师兄的leetcode刷题笔记-juhani.mobi:juhani.mobi是我创建购物清单的小助手

谷歌师兄的leetcode刷题笔记 Juhani.mobi - 语音驱动的购物清单 Juhani 是我创建购物清单的小助手 这是一个关于如何将浏览器的webkitSpeechRecognition用作语音识别 API 的实验 这曾经是我个人的学习项目,让我熟悉 PWA 和浏览器的 Web Speech API 目的是优化我的个人杂货店购物体验 尤哈尼的故事 我家有四个人和一只猫。 这意味着在管理杂货方面需要付出很多努力。 使用语音驱动的应用程序,我可以在几秒钟内创建一个购物清单。 最初这应该是一个数学游戏,但这个想法很早就发生了转变。 该应用程序的名称是 Juhani,因为这恰好是我的姐夫的名字,他非常乐于助人。 再次感谢 Juhani Juhani 可以做的技巧(在 Android 手机上) 检测芬兰语单词并将它们放在列表中 将数量词、形容词和名词的组合检测到列表中的一项。 例如,“5 litraa maitoa”或“puoli Kiloa mansikoita” 使用拖放重新排序项目 将收集的项目推送到列表的末尾 未来的想法 魔法词组如果事情。 “Hedelmät”会自动翻译成“O

【剑指offer合集】

3.二维数组的查找

chicc999的专栏 420

PDN设计

作者:AirCity 2020.2.6 Aircity007@sina.com 本文所有权归作者Aircity所有 PDN设计的目的是降低电源纹波水平,减小电压跌落。我们通常要求LDO的文波水平是30mV,DCDC是50mV,超过这个就需要PDN设计。 PDN设计的方法是用不同的容值,合适的总电容量,降低电源平面与地平面之间的交流阻抗,确定容值总量和电容大小的过程,就是PDN设计过程。 为什么需...

AirCity123的博客 4148

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7153

剑指offer4(python)

def replaceSpace(str): """" 实现一个函数,字符串中每个空格替换成"%20" """ count =0 for i in str: if i == " ": count += 1 lenghth2 = len(str)+count*2 str2 = [0]*lenghth2 .

Elvira_two的博客 294

基于STM32的坐姿矫正与久坐提醒系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配MPU6050六轴姿态传感器、HC-SR04超声波测距模块,完整实现了坐姿矫正与久坐提醒系统的全流程开发,从多传感器数据采集、数字滤波、姿态解算、坐姿判断到多模式提醒,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 440

剑指offer4-重建二叉树

剑指offer4-重建二叉树 最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩! 1、题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回根结...

sk18192449347的博客 303

MIPI DSI2接口开发避坑指南:以RK3576的GM8775C桥接芯片调试为例

本文以RK3576平台搭配GM8775C桥接芯片为例,深入剖析MIPI DSI2接口开发中的常见问题与解决方案。文章详细解读了从U-Boot阶段到内核DRM驱动架构的完整显示通路构建,重点分享了电源时序管理、寄存器配置与硬件协同调试等实战经验,为嵌入式显示系统开发者提供了一套系统化的避坑指南和调试方**。

weixin_29290379的博客 329

微信小程序 - 实现人脸识别对比+人脸相似度数据,用户从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,微信小程序检测人脸相似度(免费纯前端方案+调用第三方API接口方案)

微信小程序实现人脸识别对比,微信小程序人脸对比 人脸对比识别 人脸对比相似度,实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,小程序人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,微信小程序人脸相似度对比分析,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。小程序如何实现人脸相似度比对,小程序纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,调用百度AI的人脸识别,微信小程序中实现人脸识别认证,实现人脸检测、人脸

🏆 前端领域优质创作者 4865

剑指offer4&&5

剑指offer4&&5(水中水,水一波,自用,勿cue)

君鼎的博客 286

ASPICE学习笔记

ASPICE的全称是Automotive SPICE。

汽车电子软件领域知识分享 1355

剑指Offer4:重建二叉树

剑指Offer4.重建二叉树 1.题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 2.基础知识 前序遍历:先访问根结点,再访问左子结点,最后访问右子结点。 中序遍历:先访问左子结点,再访问根结点,最后访...

七小琦 154

从零开始创建Davinci Configurator配置工程

本文介绍了从零开始搭建达芬奇工程的详细步骤。首先安装Vector的CBD包后,通过DavicCFG.exe新建空白ECU工程。文章提到Postbuild相关概念可参考往期文章《AUTOSAR配置中的PostBuild、Precompile、Linktime》,并预告下期将讲解如何通过导入DBC文件来启用AUTOSAR模块。全文以实操截图为主,步骤清晰简明,适合开发者参考备份。

Xiaowestwind的博客 223

【深度学习新浪潮】AI 智能眼镜关键视觉技术、技术栈及开源项目全解析

Meta新款智能眼镜在演示中暴露出的AI误判和延迟问题,揭示了端侧视觉与多模态算法落地的核心瓶颈。本文从算法工程视角解析了AI智能眼镜的三大关键技术:感知增强(多帧降噪、HDR成像)、场景解析(轻量化目标检测、语义分割)和空间定位(视觉SLAM、ToF辅助),并梳理了完整的技术栈架构,包括硬件适配、驱动优化和框架选型。文章还提供了高价值开源项目参考,如OpenXR和ORB-SLAM3,为端侧视觉算法落地提供实操指南,助力开发者攻克算力约束下的实时性、精度和功耗平衡难题。

专注:太空算力、AI infra、异构调度、大模型成本工程 530

剑指offer:面试4——替换空格

剑指offer:面试4——替换空格 题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 class Solution { public: void replaceSpace(char *str,int length) { //if(str== NULL || le...

MereX的博客 343

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

剑指offer第4题:重建二叉树

剑指offer第四题:重建二叉树题目描述重建二叉树分析二叉树的遍历,递归源码 题目描述 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析 二叉树的遍历,递归 利用递归的思路,(前列:前序遍历序列...

可爱的小腊肉 252

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【剑指offer】BM4 合并两个排序的链表(js实现)

代码】【剑指offer】BM4 合并两个排序的链表(js实现)

在热爱技术的路上一直前行。 250

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

用二维数组输出矩阵_二维数组原来这么好玩,题解剑指 offer 第 4 号算法题:搜索二维矩阵...

leetcode 第 74 号题在看剑指 offer 第 4 号题之前,我们先来看一个类似的二维数组搜索的问题。这道题目是 leetcode 的 74 号题目,问题描述如下。编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下的特性:每行中的整数从左到右按升序排列每行的第一个整数大于前一行的最后一个整数示例 1 :输入: matrix = [ [1, 3, 5...

weixin_39801991的博客 444

《剑指Offer》面试题4:替换空格

《剑指Offer》 P44面试题4:替换空格题目:

(●—●) 476

【LeetCode】剑指 Offer(4)

剑指 Offer 10- I. 斐波那契数列 剑指 Offer 10- II. 青蛙跳台阶问题

Locky136的博客 1414

剑指 offer day4

剑指 Offer 03. 数组中重复的数字 题目: 在一个长度为 n 的数组nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 题解: 遍历数组,将数据存储在map中,每次循环均判断map中是否存在: -若存在,则直接break,返回结果; -若不存在,则将数据存储在map集合中继续遍历。 public int findRepeatNumber(int[] nums) { M

qq_52641681的博客 172

剑指offer_4

剑指offer_4(每日5题) 1. 合并两个排序的链表 题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 参考代码: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;...

xiaocongplus的博客 123

剑指offer-day4

剑指 Offer 41. 数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 剑指 Offer 43. 1~n 整数中 1 出现的次数 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的

yzfwx2000的博客 484

剑指offer最新版_[剑指offer]4栈实现队列

今天开始将和大家坚持打卡面试非常重要算法练习---剑指offer,希望我们能一起肝。栈栈是一种先进后出的数据结构。栈中的元素从栈顶(top)压入(push),从栈顶弹出(top)。注意:压入我们需要判栈是否已满,弹出需要判栈是否已空。下面我们看看图加深下印象。在这里插入图片描述在这里插入图片描述入栈 1 2 3出栈 3 2 1队列队列是一种先进先出的数据结构。队列中的元素从队尾(rear...

weixin_32824625的博客 105
上一篇: Windows下安装XGBoost(python基于Anaconda2)
下一篇: Python中reshape函数参数-1的意思
voidfaceless
博客等级 码龄10年 100粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值