当前位置: 首页 > news >正文

每日5题Day22 - LeetCode 106 - 110

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {Map<Integer, Integer> map = new HashMap<>();//把中序每个点都记录下来for(int i = 0; i < inorder.length; i++){map.put(inorder[i], i);}//传入后序的最后一个节点,因为是根节点TreeNode head = helper(0, inorder.length - 1, map, postorder, postorder.length - 1);return head;}private static TreeNode helper(int low, int high, Map<Integer, Integer> map, int[] postorder, int idx){if(low > high){return null;}//找到对应的值int val = postorder[idx];//在中序中找到分割点int index = map.get(val);TreeNode node = new TreeNode(val);//递归找到左右子树node.left = helper(low, index - 1, map, postorder, idx - (high - index) - 1);node.right = helper(index + 1, high, map, postorder, idx - 1);return node;}
}

第二题:107. 二叉树的层序遍历 II - 力扣(LeetCode)

class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root) {//就是使用栈每次把每一层记录下来,最后逆序输出//本质上还是属于层序遍历List<List<Integer>> res = new ArrayList<>();if(root == null){return res;}Deque<TreeNode> stack = new ArrayDeque<>();stack.offer(root);while(!stack.isEmpty()){List<Integer> tmp = new ArrayList<>();int size = stack.size();for(int i = 0; i < size; i++){TreeNode cur_node = stack.poll();tmp.add(cur_node.val);if(cur_node.left != null){stack.offer(cur_node.left);}if(cur_node.right != null){stack.offer(cur_node.right);}}res.add(0,tmp);}return res;}
}

第三题:108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode)

class Solution {public TreeNode sortedArrayToBST(int[] nums) {//题目提到有序,二叉,高度要平衡,//相当于每次我们找到节点都是要中间节点//随后向两边扩散,所以创建二叉搜索树的时候一定要二叉return helper(nums, 0 , nums.length - 1);}private TreeNode helper(int[] nums, int left, int right){if(left > right){return null;}//找到中间节点int mid = left + (right - left) / 2;TreeNode node = new TreeNode(nums[mid]);//递归node.left = helper(nums, left, mid - 1);node.right = helper(nums, mid + 1, right);//注意是返回某个节点return node;}
}

第四题:109. 有序链表转换二叉搜索树 - 力扣(LeetCode)

class Solution {public TreeNode sortedListToBST(ListNode head) {if (head == null) {return null; // 基本情况}return convertToBST(head, null);}private TreeNode convertToBST(ListNode head, ListNode tail) {if (head == tail) {return null; // 基本情况:子列表为空}//使用快慢指针来实现二分中查找中位的过程ListNode slow = head;ListNode fast = head;while (fast != tail && fast.next != tail) {slow = slow.next;fast = fast.next.next;}TreeNode root = new TreeNode(slow.val);root.left = convertToBST(head, slow);root.right = convertToBST(slow.next, tail);return root;}
}

 第五题:110. 平衡二叉树 - 力扣(LeetCode)

class Solution {public boolean isBalanced(TreeNode root) {//对于每一个点进行递归判断return getH(root) != -1;}private static int getH(TreeNode node){//对于每一个特定的点,如果为空则高度为0if(node == null){return 0;}//找到左边,如果左边不满足,则自身也不满足int left = getH(node.left);if(left == -1){return -1;}//同理,右边同样逻辑int right = getH(node.right);if(right == -1){return -1;}//注意下面判别式,判断左右高度差值是否大于1//大了肯定不满足了//否则我们给出一个最大高度if(Math.abs(left - right) > 1){return -1;}else{return Math.max(left, right) + 1;}}
}

相关文章:

每日5题Day22 - LeetCode 106 - 110

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;106. 从中序与后序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {…...

【Python】读取文件夹中所有excel文件拼接成一个excel表格 的方法

我们平常会遇到下载了一些Excel文件放在一个文件夹下&#xff0c;而这些Excel文件的格式都一样&#xff0c;这时候需要批量这些文件合并成一个excel 文件里。 在Python中&#xff0c;我们可以使用pandas库来读取文件夹中的所有Excel文件&#xff0c;并将它们拼接成一个Excel表…...

7. 通配符和正则表达式

文章目录 7.1 通配符7.1.1 通配符介绍7.1.2 通配符示例 7.2 正则表达式7.2.1 grep命令7.2.2 基本正则表达式7.2.3 扩展正则表达式 7.1 通配符 在 Shell 中通配符用于查找文件名和目录名。它是由 Shell 处理的&#xff0c;只会出现在命令的参数中。 7.1.1 通配符介绍 * 匹…...

ROS2底层机制源码分析

init ->init_and_remove_ros_arguments ->init ->Context::init 保存初始化传入的信号 ->install_signal_handlers→SignalHandler::install 开线程响应信号 ->_remove_ros_arguments 移除ros参数 ->SingleNodeManager::instance().…...

超越 Transformer开启高效开放语言模型的新篇章

在人工智能快速发展的今天&#xff0c;对于高效且性能卓越的语言模型的追求&#xff0c;促使谷歌DeepMind团队开发出了RecurrentGemma这一突破性模型。这款新型模型在论文《RecurrentGemma&#xff1a;超越Transformers的高效开放语言模型》中得到了详细介绍&#xff0c;它通过…...

快速排序-Hoare 递归版 C语言

个人主页点这里~ 快速排序的简介: 快速排序是Hoare于1962年提出的一种 二叉树结构 的 交换 排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中 的某元素作为 基准值 &#xff0c;按照该排序码将待排序集合分割成 两子序列 &#xff0c; 左子序列中所有元素均 …...

C语言经典指针运算笔试题图文解析

指针运算常常出现在面试题中&#xff0c;画图解决是最好的办法。 题目1&#xff1a; #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的结果是什么&…...

使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战

今天&#xff0c;我将为大家实战演示&#xff0c;如何基于操作系统 openEuler 22.03 LTS SP3&#xff0c;利用 KubeKey 制作 Kubernetes 离线安装包&#xff0c;并实战离线部署 Kubernetes v1.28.8 集群。 实战服务器配置 (架构 1:1 复刻小规模生产环境&#xff0c;配置略有不…...

DOS 命令

Dos&#xff1a; Disk Operating System 磁盘操作系统, 简单说一下 windows 的目录结构。 ..\ 到上一级目录 常用的dos 命令&#xff1a; 查看当前目录是有什么内容 dir dir d:\abc2\test200切换到其他盘下&#xff1a;盘符号 cd : change directory 案例演示&#xff1a;切换…...

如何用Java程序实现一个简单的消息队列?

在Java程序中&#xff0c;可以使用内置的java.util.concurrent.BlockingQueue作为消息队列存放的容器&#xff0c;来实现一个简单的消息队列。 具体实现如下&#xff0c;在这个例子中&#xff0c;我们创建了一个生产者线程和一个消费者线程&#xff0c;他们共享同一个阻塞队列…...

OpenAI 宕机事件:GPT 停摆的影响与应对

引言 2024年6月4日&#xff0c;OpenAI 的 GPT 模型发生了一次全球性的宕机&#xff0c;持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务&#xff0c;还导致大量用户涌向竞争对手平台&#xff0c;如Claude和Gemini&#xff0c;结果也导致这些平台出现故障。这次事件的广…...

linux常用的基础命令

ls - 列出目录内容。 cd - 更改目录。 pwd - 打印当前工作目录。 mkdir - 创建新目录。 rmdir - 删除空目录。 touch - 创建新文件或更新现有文件的时间戳。 cp - 复制文件或目录。 mv - 移动或重命名文件或目录。 rm - 删除文件或目录。 cat - 显示文件内容。 more - 分页显示…...

618家用智能投影仪推荐:这个高性价比品牌不容错过

随着科技的不断进步&#xff0c;家庭影院的概念已经从传统的大屏幕电视逐渐转向了更为灵活和便携的家用智能投影仪。随着618电商大促的到来&#xff0c;想要购买投影仪的用户们也开始摩拳擦掌了。本文将从投影仪的基础知识入手&#xff0c;为您推荐几款性价比很高的投影仪&…...

自愿离婚协议书

自愿离婚协议书 男方&#xff08;夫&#xff09;&#xff1a; 女方&#xff08;妻&#xff09;&#xff1a; 双方现因 原因&#xff0c;导致夫妻情感已破裂&#xff0c;自愿离婚…...

WPS JSA 宏脚本入门和样例

1入门 WPS window版本才支持JSA宏的功能。 可以自动化的操作文档中的一些内容。 参考文档&#xff1a; WPS API 参考文档&#xff1a;https://open.wps.cn/previous/docs/client/wpsLoad 微软的Word API文档&#xff1a;Microsoft.Office.Interop.Word 命名空间 | Microsoft …...

Printing and Exporting

打印 大多数DevExpress。NET控件&#xff08;XtraGrid、XtraPivotGrid、XttraTreeList、XtraScheduler、XtraCharts&#xff09;提供打印和导出功能。 所有可打印的DevExpress.NET控件是使用XtraPrinting库提供的方法打印的。 若要确定预览和打印选项是否可用&#xff0c;请检…...

c++【入门】正多边形每个内角的度数

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 根据多边形内角和定理&#xff0c;正多边形内角和等于&#xff1a;&#xff08;n &#xff0d; 2&#xff09;180(n大于等于3且n为整数&#xff09;&#xff08;如下图所示是三角形、四边形、五边形、六边形的形状&#xff09…...

spring boot3登录开发-邮箱登录/注册接口实现

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 内容简介 功能分析 所需依赖 邮箱验证登录/注册实现 1.创建交互对象 2.登录注册业务逻辑实…...

数据结构-二叉搜索树

二叉搜索树&#xff1a;BST(Binary Search Tree) 二叉搜索树是二叉树&#xff0c;可以为空&#xff0c;如果不为空&#xff0c;满足以下性质&#xff1a; 非空左子树的所有键值小于其根节点的键值非空右子树的所有键值大于其根节点的键值左、右字数本身也都是二叉搜索树 二叉…...

JUnit:Java开发者不可或缺的单元测试框架

在软件开发过程中&#xff0c;测试是确保代码质量的关键环节。单元测试作为测试体系的基础&#xff0c;对提升代码质量、降低bug率、增强软件稳定性具有重要作用。JUnit 作为 Java 语言事实上的标准单元测试框架&#xff0c;已经成为 Java 开发者进行单元测试的首选工具。本文将…...

KV缓存优化在语音大模型中的挑战与AudioKV解决方案

1. KV缓存管理在大型语言模型中的核心挑战在Transformer架构的大型语言模型&#xff08;LLM&#xff09;推理过程中&#xff0c;KV&#xff08;Key-Value&#xff09;缓存技术通过存储历史注意力键值对来避免重复计算&#xff0c;这项优化使得自回归生成的计算复杂度从O(n)降低…...

保姆级教程:用MPTool给瑞昱RTL8762CMF蓝牙芯片烧录固件(附串口接线图)

零基础实战&#xff1a;RTL8762CMF蓝牙芯片固件烧录全流程指南 拿到一块搭载RTL8762CMF的开发板时&#xff0c;最关键的步骤莫过于正确烧录固件。作为一款支持蓝牙5.0的低功耗芯片&#xff0c;RTL8762CMF在物联网设备中应用广泛。但很多开发者在首次接触时&#xff0c;往往会在…...

从灾难电影到现实防疫:技术视角下的系统脆弱性与韧性构建

1. 从科幻到现实&#xff1a;流行病史与灾难电影的预言性对话作为一名长期关注科技与社会交叉领域的写作者&#xff0c;我发现自己近年来越发沉迷于一种特殊的电影类型——灾难片&#xff0c;尤其是那些以病毒大流行为主题的影片。这并非单纯的娱乐消遣&#xff0c;而更像是一种…...

从内核恐慌到系统恢复:一次NMI watchdog触发的soft lockup深度诊断

1. 当服务器突然卡死&#xff1a;从NMI watchdog错误说起 那天下午3点&#xff0c;机房警报突然响起。我冲到服务器前&#xff0c;屏幕上赫然显示着刺眼的红色错误&#xff1a;"NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s!"。这台承载着核心业务的服务器…...

OpenCore Legacy Patcher深度解析:让老旧Mac重获新生的技术实现

OpenCore Legacy Patcher深度解析&#xff1a;让老旧Mac重获新生的技术实现 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 对于拥有2008年至2017年Intel Mac…...

十分钟速通:GO、KEGG、COG注释与富集分析的实战指南

1. 从测序数据到功能注释的快速通道 刚拿到高通量测序数据的同学&#xff0c;面对海量基因序列时总会陷入迷茫&#xff1a;这些基因到底有什么功能&#xff1f;它们参与了哪些生物过程&#xff1f;这时候GO、KEGG和COG三大注释工具就是你的"基因翻译官"。我处理过上百…...

终极Blender 3MF插件:如何快速实现3D打印文件的无缝转换

终极Blender 3MF插件&#xff1a;如何快速实现3D打印文件的无缝转换 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat是一款专为Blender设计的开源插件&a…...

终极智能温控指南:FanControl风扇控制软件完整配置教程

终极智能温控指南&#xff1a;FanControl风扇控制软件完整配置教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

SINAMICS V90伺服驱动器故障代码大全

SINAMICS V90伺服驱动器在运行过程中可能出现故障&#xff0c;导致设备停机。用户可通过BOP面板或调试软件查看故障代码&#xff0c;并根据以下信息判断故障原因及处理方法。序号报警号信息故障信息可能原因处理方法1F1000内部软件错误出现了一个内部软件错误。分析故障缓冲器为…...

AI编码助手如何重塑开发体验:从工具到伙伴的范式转变

1. 项目概述&#xff1a;当AI编码助手遇上“氛围感”最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“awesome-ai-vibe-coding”。初看这个标题&#xff0c;可能会有点摸不着头脑。“Awesome”系列我们见多了&#xff0c;是各种优质资源的集合&#xff1b;“AI Coding”也…...