- 本文就来写手把手刷 BST 系列的第三篇,循序渐进地讲两道题,如何计算所有合法 BST。第一道题是力扣第 96 题「不同的二叉搜索树」,给你输入一个正整数n,请你计算,存储{1,2,3...,n}这些值共有有多少种不同的 BST 结构。函数签名如下:int numTrees(int n);比如说输入n = 3,算法返回 5,因为共有如下 5 种不同的 BST 结构存储{1,2,3}:这就是一... 本文就来写手把手刷 BST 系列的第三篇,循序渐进地讲两道题,如何计算所有合法 BST。第一道题是力扣第 96 题「不同的二叉搜索树」,给你输入一个正整数n,请你计算,存储{1,2,3...,n}这些值共有有多少种不同的 BST 结构。函数签名如下:int numTrees(int n);比如说输入n = 3,算法返回 5,因为共有如下 5 种不同的 BST 结构存储{1,2,3}:这就是一...
- 一、判断 BST 的合法性这里是有坑的哦,我们按照刚才的思路,每个节点自己要做的事不就是比较自己和左右孩子吗?看起来应该这样写代码:boolean isValidBST(TreeNode root) { if (root == null) return true; if (root.left != null && root.val <= root.left.val) ... 一、判断 BST 的合法性这里是有坑的哦,我们按照刚才的思路,每个节点自己要做的事不就是比较自己和左右孩子吗?看起来应该这样写代码:boolean isValidBST(TreeNode root) { if (root == null) return true; if (root.left != null && root.val <= root.left.val) ...
- 前文「手把手刷二叉树系列」已经写了 第一期,第二期 和 第三期,今天写一篇二叉搜索树(Binary Search Tree,后文简写 BST)相关的文章,手把手带你刷 BST。首先,BST 的特性大家应该都很熟悉了:1、对于 BST 的每一个节点node,左子树节点的值都比node的值要小,右子树节点的值都比node的值大。2、对于 BST 的每一个节点node,它的左侧子树和右侧子树都是 ... 前文「手把手刷二叉树系列」已经写了 第一期,第二期 和 第三期,今天写一篇二叉搜索树(Binary Search Tree,后文简写 BST)相关的文章,手把手带你刷 BST。首先,BST 的特性大家应该都很熟悉了:1、对于 BST 的每一个节点node,左子树节点的值都比node的值要小,右子树节点的值都比node的值大。2、对于 BST 的每一个节点node,它的左侧子树和右侧子树都是 ...
- 一直都有很多读者说,想让我用 框架思维 讲一讲基本的排序算法,我觉得确实得讲讲,毕竟学习任何东西都讲求一个融会贯通,只有对其本质进行比较深刻的理解,才能运用自如。本文就先讲归并排序,给一套代码模板,然后讲讲它在算法问题中的应用。阅读本文前我希望你读过前文 手把手刷二叉树(纲领篇)。我在 手把手刷二叉树(第一期) 讲二叉树的时候,提了一嘴归并排序,说归并排序就是二叉树的后序遍历,当时就有很多读... 一直都有很多读者说,想让我用 框架思维 讲一讲基本的排序算法,我觉得确实得讲讲,毕竟学习任何东西都讲求一个融会贯通,只有对其本质进行比较深刻的理解,才能运用自如。本文就先讲归并排序,给一套代码模板,然后讲讲它在算法问题中的应用。阅读本文前我希望你读过前文 手把手刷二叉树(纲领篇)。我在 手把手刷二叉树(第一期) 讲二叉树的时候,提了一嘴归并排序,说归并排序就是二叉树的后序遍历,当时就有很多读...
- 接前文 手把手带你刷二叉树(第一期)和 手把手带你刷二叉树(第二期),本文继续来刷二叉树。从前两篇文章的阅读量来看,大家还是能够通过二叉树学习到 框架思维 的。但还是有不少读者有一些问题,比如如何判断我们应该用前序还是中序还是后序遍历的框架?那么本文就针对这个问题,不贪多,给你掰开揉碎只讲一道题。还是那句话,根据题意,思考一个二叉树节点需要做什么,到底用什么遍历顺序就清楚了。看题,这是力扣第... 接前文 手把手带你刷二叉树(第一期)和 手把手带你刷二叉树(第二期),本文继续来刷二叉树。从前两篇文章的阅读量来看,大家还是能够通过二叉树学习到 框架思维 的。但还是有不少读者有一些问题,比如如何判断我们应该用前序还是中序还是后序遍历的框架?那么本文就针对这个问题,不贪多,给你掰开揉碎只讲一道题。还是那句话,根据题意,思考一个二叉树节点需要做什么,到底用什么遍历顺序就清楚了。看题,这是力扣第...
- 读完本文,可以去力扣解决如下题目:297. 二叉树的序列化和反序列化(困难)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文是承接 东哥带你刷二叉树(纲领篇) 的第三篇文章,前文 东哥带你刷二叉树(构造篇) 带你学习了二叉树构造技巧,本文加大难度,让你对二叉树同时进行「序列化」和「反序列化」。要说序... 读完本文,可以去力扣解决如下题目:297. 二叉树的序列化和反序列化(困难)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文是承接 东哥带你刷二叉树(纲领篇) 的第三篇文章,前文 东哥带你刷二叉树(构造篇) 带你学习了二叉树构造技巧,本文加大难度,让你对二叉树同时进行「序列化」和「反序列化」。要说序...
- 读完本文,可以去力扣解决如下题目:654. 最大二叉树(中等)105. 从前序与中序遍历序列构造二叉树(中等)106. 从中序与后序遍历序列构造二叉树(中等)889. 根据前序和后序遍历构造二叉树(中等)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文是承接 东哥带你刷二叉树(纲领篇) 的第二篇文章... 读完本文,可以去力扣解决如下题目:654. 最大二叉树(中等)105. 从前序与中序遍历序列构造二叉树(中等)106. 从中序与后序遍历序列构造二叉树(中等)889. 根据前序和后序遍历构造二叉树(中等)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文是承接 东哥带你刷二叉树(纲领篇) 的第二篇文章...
- 读完本文,可以去力扣解决如下题目:226. 翻转二叉树(简单)114. 二叉树展开为链表(中等)116. 填充每个节点的下一个右侧节点指针(中等)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文承接 东哥带你刷二叉树(纲领篇),先复述一下前文总结的二叉树解题总纲:二叉树解题的思维模式分两类:1、是否... 读完本文,可以去力扣解决如下题目:226. 翻转二叉树(简单)114. 二叉树展开为链表(中等)116. 填充每个节点的下一个右侧节点指针(中等)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。本文承接 东哥带你刷二叉树(纲领篇),先复述一下前文总结的二叉树解题总纲:二叉树解题的思维模式分两类:1、是否...
- 读完本文,可以去力扣解决如下题目:104. 二叉树的最大深度(简单)543. 二叉树的直径(简单)144. 二叉树的前序遍历(简单)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。公众号历史文章的整个脉络都是按照 学习数据结构和算法的框架思维 提出的框架来构建的,其中着重强调了二叉树题目的重要性。我刷了... 读完本文,可以去力扣解决如下题目:104. 二叉树的最大深度(简单)543. 二叉树的直径(简单)144. 二叉树的前序遍历(简单)PS:刷题插件 集成了手把手刷二叉树功能,按照公式和套路讲解了 150 道二叉树题目,可手把手带你刷完二叉树分类的题目,迅速掌握递归思维。公众号历史文章的整个脉络都是按照 学习数据结构和算法的框架思维 提出的框架来构建的,其中着重强调了二叉树题目的重要性。我刷了...
- 读完本文,你可以去力扣解决如下题目:第 316 题「去除重复字母」,难度 Hard 第 1081 题「不同字符的最小子序列」,难度 Medium关于去重算法,应该没什么难度,往哈希集合里面塞不就行了么?最多给你加点限制,问你怎么给有序数组原地去重,这个我们旧文 如何高效地给有序数组/链表去重 讲过。本文讲的问题应该是去重相关算法中难度最大的了,把这个问题搞懂,就再也不用怕数组去重问题了。这是... 读完本文,你可以去力扣解决如下题目:第 316 题「去除重复字母」,难度 Hard 第 1081 题「不同字符的最小子序列」,难度 Medium关于去重算法,应该没什么难度,往哈希集合里面塞不就行了么?最多给你加点限制,问你怎么给有序数组原地去重,这个我们旧文 如何高效地给有序数组/链表去重 讲过。本文讲的问题应该是去重相关算法中难度最大的了,把这个问题搞懂,就再也不用怕数组去重问题了。这是...
- 这是力扣第 380 题,看下题目:就是说就是让我们实现如下一个类:class RandomizedSet { /** 如果 val 不存在集合中,则插入并返回 true,否则直接返回 false */ public boolean insert(int val) {} /** 如果 val 在集合中,则删除并返回 true,否则直接返回 false */ public... 这是力扣第 380 题,看下题目:就是说就是让我们实现如下一个类:class RandomizedSet { /** 如果 val 不存在集合中,则插入并返回 true,否则直接返回 false */ public boolean insert(int val) {} /** 如果 val 在集合中,则删除并返回 true,否则直接返回 false */ public...
- 读完本文,可以去力扣解决如下题目:528. 按权重随机选择(中等)写这篇的文章的原因是玩 LOL 手游。我有个朋友抱怨说打排位匹配的队友太菜了,我就说我打排位觉得队友都挺行的啊?我经常躺赢。朋友意味深长地说了句:一般隐藏分比较高的玩家,排位如果排不到实力相当的队友,就会排到一些菜狗。嗯?我想了几秒钟感觉这小伙子不对劲,他意思是说我隐藏分低,还是说我就是那条菜狗?我立马要求和他开黑打一把,证明... 读完本文,可以去力扣解决如下题目:528. 按权重随机选择(中等)写这篇的文章的原因是玩 LOL 手游。我有个朋友抱怨说打排位匹配的队友太菜了,我就说我打排位觉得队友都挺行的啊?我经常躺赢。朋友意味深长地说了句:一般隐藏分比较高的玩家,排位如果排不到实力相当的队友,就会排到一些菜狗。嗯?我想了几秒钟感觉这小伙子不对劲,他意思是说我隐藏分低,还是说我就是那条菜狗?我立马要求和他开黑打一把,证明...
- 本文是以前的一篇《二分查找详解》的修订版,在力扣上获得近 600 点赞,恐怕是全站最高题解了吧。这篇增加了很多新内容,而且将三种二分形式以一个框架统一起来了,以不变应万变,你遇到啥问题直接改两行就完事儿了。为此我还特意作了首诗,可以说无敌的存在,建议收藏。先给大家讲个笑话乐呵一下:有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿... 本文是以前的一篇《二分查找详解》的修订版,在力扣上获得近 600 点赞,恐怕是全站最高题解了吧。这篇增加了很多新内容,而且将三种二分形式以一个框架统一起来了,以不变应万变,你遇到啥问题直接改两行就完事儿了。为此我还特意作了首诗,可以说无敌的存在,建议收藏。先给大家讲个笑话乐呵一下:有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿...
- 读完本文,可以去力扣解决如下题目:28. 实现 strStr()(简单)187. 重复的DNA序列(中等)经常有读者留言,请我讲讲那些比较经典的算法,我觉得有这个必要,主要有以下原因:1、经典算法之所以经典,一定是因为有独特新颖的设计思想,那当然要带大家学习一波。2、我会尽量从最简单、最基本的算法切入,带你亲手推导出来这些经典算法的设计思想,自然流畅地写出最终解法。一方面消除大多数人对算法的... 读完本文,可以去力扣解决如下题目:28. 实现 strStr()(简单)187. 重复的DNA序列(中等)经常有读者留言,请我讲讲那些比较经典的算法,我觉得有这个必要,主要有以下原因:1、经典算法之所以经典,一定是因为有独特新颖的设计思想,那当然要带大家学习一波。2、我会尽量从最简单、最基本的算法切入,带你亲手推导出来这些经典算法的设计思想,自然流畅地写出最终解法。一方面消除大多数人对算法的...
- 在线学习网站:https://labuladong.github.io/algo/读完本文,可以去力扣解决如下题目:76. 最小覆盖子串(困难)567. 字符串的排列(中等)438. 找到字符串中所有字母异位词(中等)3. 无重复字符的最长子串(中等)鉴于前文 二分搜索框架详解 的那首《二分搜索升天词》很受好评,并在民间广为流传,成为安睡助眠的一剂良方,今天在滑动窗口算法框架中,我再次编写一... 在线学习网站:https://labuladong.github.io/algo/读完本文,可以去力扣解决如下题目:76. 最小覆盖子串(困难)567. 字符串的排列(中等)438. 找到字符串中所有字母异位词(中等)3. 无重复字符的最长子串(中等)鉴于前文 二分搜索框架详解 的那首《二分搜索升天词》很受好评,并在民间广为流传,成为安睡助眠的一剂良方,今天在滑动窗口算法框架中,我再次编写一...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签