![](https://img-blog.csdnimg.cn/20210808175337161.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
力扣刷题记录
小小的香辛料
天落九重影,君便晓黎明炫目。
展开
-
【代码随想录day26】动态规划:01背包理论基础(滚动数组)
有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。,求解将哪些物品装入背包里物品价值总和最大。原创 2023-09-08 11:35:52 · 412 阅读 · 0 评论 -
【代码随想录day25】动态规划:01背包理论基础
有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。,求解将哪些物品装入背包里物品价值总和最大。原创 2023-09-07 13:14:32 · 387 阅读 · 0 评论 -
【代码随想录day24】不同的二叉搜索树
给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的有多少种?返回满足题意的二叉搜索树的种数。原创 2023-09-06 23:15:06 · 654 阅读 · 0 评论 -
【代码随想录day24】整数拆分
给定一个正整数n,将其拆分为k个的和(k >= 2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。原创 2023-09-06 10:16:28 · 157 阅读 · 0 评论 -
【代码随想录day23】不同路径 II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。23x3 网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右101。原创 2023-09-01 16:54:46 · 226 阅读 · 0 评论 -
【代码随想录day23】不同路径
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?283从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下286。原创 2023-09-01 16:42:01 · 321 阅读 · 0 评论 -
【代码随想录day23】使用最小花费爬楼梯
给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。,20]15你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15。cost = [,100,,1,,100,,100,6你将从下标为 0 的台阶开始。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。原创 2023-09-01 16:29:12 · 188 阅读 · 0 评论 -
【代码随想录day22】爬楼梯
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶n = 33有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶。原创 2023-08-16 23:26:26 · 431 阅读 · 0 评论 -
【代码随想录day22】斐波那契数
(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。原创 2023-08-16 23:11:22 · 183 阅读 · 0 评论 -
【滴滴提前批】移掉 K 位数字
给你一个以字符串表示的非负整数num和一个整数k,移除这个数中的k位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。"1219"移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。"200"移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。"0"从原数字移除所有的数字,剩余为空就是 0。num。原创 2023-08-16 22:39:00 · 183 阅读 · 0 评论 -
【百度提前批】股票的最大利润
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?5在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。0在这种情况下, 没有交易完成, 所以最大利润为 0。原创 2023-08-16 22:33:30 · 290 阅读 · 0 评论 -
【代码随想录day21】二叉搜索树中的插入操作
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回 任意有效的结果。原创 2023-07-27 17:46:09 · 311 阅读 · 0 评论 -
【代码随想录day21】二叉搜索树的最近公共祖先
解题的关键是知道自顶向低递归遍历,第一次遇到root在p和q的区间中时,则root就是p和q的最近公共祖先节点。原创 2023-07-27 17:08:16 · 298 阅读 · 0 评论 -
【代码随想录day21】二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。原创 2023-07-27 15:03:36 · 175 阅读 · 0 评论 -
【代码随想录day21】二叉搜索树中的众数
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树。原创 2023-07-27 11:16:22 · 253 阅读 · 0 评论 -
【代码随想录day20】二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。原创 2023-07-26 17:03:55 · 177 阅读 · 0 评论 -
【代码随想录day20】验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。原创 2023-07-26 16:24:18 · 160 阅读 · 0 评论 -
【代码随想录day20】二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。原创 2023-07-26 15:14:36 · 152 阅读 · 0 评论 -
【代码随想录day20】合并二叉树
给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]原创 2023-07-26 14:03:07 · 153 阅读 · 0 评论 -
【代码随想录day20】最大二叉树
给定一个不重复的整数数组 nums。最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树。原创 2023-07-26 11:30:51 · 241 阅读 · 0 评论 -
【代码随想录day19】从中序与后序遍历序列构造二叉树
区别是root需要从postorder列表的尾部取。原创 2023-07-25 17:41:02 · 237 阅读 · 0 评论 -
【代码随想录day19】从前序与中序遍历序列构造二叉树
找到新树的节点在中序中的索引。取出后序节点创建新树的节点。继续递归建立整颗新树。原创 2023-07-25 17:39:51 · 280 阅读 · 0 评论 -
【代码随想录day19】路径总和
如果这样的节点存在,就说明找到了一条从根节点到叶子节点的路径且路径和为target。如果走到空节点都没找到,说明当前路径不是我们要找的,返回False。最后只要左子树或者右子树中的任意一个为True都算成功找到了。,而我最开始以为只要里面有相加为target的就行,导致了一些错误。其实整体思路比较简单,对于每一个节点,我们判断。一定要认真审题,题目说的是。原创 2023-07-25 15:19:14 · 138 阅读 · 0 评论 -
【代码随想录day19】找树左下角的值
这题最直观的方法就是用层序遍历,记录一下每一层的左边第一个节点,这样整个层序遍历一遍就能找到最后一行最左边的节点。这里要注意最左边的节点不一定是父节点的左子节点!如果最后一行没有左子节点,那就只能找第一个右子节点了。递归法需要找到最大深度的节点对应的左孩子值(如果没有就找右孩子值)。其实用前中后序遍历都可以,但是要保证递归左子树一定在递归右子树前面,这样才能得到每一层的最左边节点了,如果调换一下顺序,找到的应该是最后一层最右边的节点。实际上,这题用层序遍历非常的高效,而且容易理解,非常推荐!原创 2023-07-25 14:48:10 · 234 阅读 · 0 评论 -
【代码随想录day18】左叶子之和
给定二叉树的根节点root,返回所有左叶子之和。输入: root = [3,9,20,null,null,15,7]输出: 24解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例 2:输入: root = [1]输出: 0。原创 2023-07-24 15:28:55 · 98 阅读 · 0 评论 -
【代码随想录day18】二叉树的所有路径
给你一个二叉树的根节点root,按,返回所有从根节点到叶子节点的路径。是指没有子节点的节点。原创 2023-07-24 14:26:46 · 103 阅读 · 0 评论 -
【代码随想录17】平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。原创 2023-07-23 20:01:36 · 304 阅读 · 0 评论 -
【代码随想录day16】完全二叉树的节点个数
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。原创 2023-07-21 10:32:27 · 122 阅读 · 0 评论 -
【代码随想录day15】二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。叶子节点是指没有子节点的节点。输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内。原创 2023-07-20 19:07:33 · 104 阅读 · 0 评论 -
【代码随想录day15】二叉树的最大深度
这道题我同样不认为他是“简单”题,虽然代码简单,但是思路非常值得学习。顺便写一下N叉树的最大深度。原创 2023-07-20 18:36:49 · 128 阅读 · 0 评论 -
【代码随想录day15】对称二叉树
,然后在迭代的过程中不断的从容器中弹出一对节点,判断它俩是否相同,如果是则继续迭代直到把所有节点全部迭代完返回True,如果中间有不匹配的则直接返回False。这个分类成简单题我是不认同的,递归逻辑虽然不复杂,但是第一次想也不好想出来的。其实这个用栈和队列都可以,整个过程和。有点像,思路是用容器同时存储两个“原创 2023-07-20 15:35:01 · 98 阅读 · 0 评论 -
【代码随想录day15】N 叉树的前序遍历
和二叉树的前序遍历一样,我这里就写了迭代的方式。原创 2023-07-20 14:43:56 · 99 阅读 · 0 评论 -
【代码随想录day15】翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内。原创 2023-07-20 14:14:08 · 99 阅读 · 0 评论 -
【代码随想录day15】二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内。原创 2023-07-20 11:22:48 · 82 阅读 · 0 评论 -
【代码随想录day14】二叉树的三种非递归遍历方式
【代码】【代码随想录day14】二叉树的三种非递归遍历方式。原创 2023-07-19 22:25:10 · 109 阅读 · 0 评论 -
【代码随想录13】前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。原创 2023-07-18 15:08:22 · 265 阅读 · 0 评论 -
【代码随想录day12】单调队列-滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。原创 2023-07-17 17:09:12 · 282 阅读 · 0 评论 -
【代码随想录day11】逆波兰表达式求值
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:有效的算符为 '+'、'-'、'*' 和 '/'。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个整数之间的除法总是 向零截断。表达式中不含除零运算。输入是一个根据逆波兰表示法表示的算术表达式。答案及所有中间计算结果可以用 32 位 整数表示。示例 1:输入:tokens = ["2","1","+","3","*"]输出:9。原创 2023-07-16 12:45:50 · 248 阅读 · 0 评论 -
【代码随想录day11】删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。原创 2023-07-16 11:44:18 · 349 阅读 · 0 评论 -
【代码随想录day10】有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 1:输入:s = "()"输出:true。原创 2023-07-14 14:06:46 · 206 阅读 · 0 评论