算法
文章平均质量分 58
算法
一米八五羊毛菌
这个作者很懒,什么都没留下…
展开
-
【动态规划算法题记录】62. 不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?原创 2024-06-20 15:36:36 · 201 阅读 · 0 评论 -
【贪心算法题记录】跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。原创 2024-06-19 20:27:00 · 144 阅读 · 0 评论 -
【回溯算法题记录】39. 组合总和
整体的逻辑就是我上面这张图这样(第二行的{2, 3} sum=5后面应该还有哈,但是我懒得画了)。如果至少一个数字的被选数量不同,则两种组合是不同的。所以除了第一次选择的元素之外,我们之后所做的操作都是相同的,那么就可以定义一个。的 所有 不同组合 ,并以列表形式返回。因为这题可以重复选取,那么我们每次选取都是在一个相同的集合中(例如。来表示我们首次选择的元素的index,用一个一维数组。放在类成员变量中,就不用写在函数入口。对于给定的输入,保证和为。但是不出意料的没通过。是当前路径统计的和。原创 2024-06-18 15:33:20 · 409 阅读 · 0 评论 -
【单调栈算法题记录】739. 每日温度
给定一个整数数组,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。原创 2024-06-17 15:46:15 · 201 阅读 · 0 评论 -
【笔试记录】美团 | 230812 | cpp
第二行输入 n 个正整数 ai(1原创 2024-06-15 12:00:58 · 640 阅读 · 0 评论 -
【动态规划算法题记录】746. 使用最小花费爬楼梯
给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。原创 2024-06-15 09:53:51 · 349 阅读 · 0 评论 -
【动态规划算法题记录】70. 爬楼梯——递归/动态规划
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬个台阶。你有多少种不同的方法可以爬到楼顶呢?原创 2024-06-13 17:01:12 · 446 阅读 · 0 评论 -
【动态规划算法题记录】 509. 斐波那契数
看到题目的第一眼,直接递归!完事。原创 2024-06-13 15:12:30 · 280 阅读 · 0 评论 -
【二叉树算法题记录】669. 修剪二叉搜索树
这题很容易忽略的一点是,如果当一个节点值小于给定区间,我们就直接把它的左子树送上去,需要注意的是它的左子树中可能也存在不满足区间的节点。改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。原创 2024-06-06 10:56:38 · 311 阅读 · 0 评论 -
【贪心算法题记录】122. 买卖股票的最佳时机 II
在每一天,你可以决定是否购买和/或出售股票。你也可以先购买,然后在。天卖出,那么获得的利润就是。贪心的思路就在于我们。原创 2024-06-05 10:40:49 · 793 阅读 · 0 评论 -
【贪心算法题记录】1005. K 次取反后最大化的数组和
代码很简单,虽然ac了,但是如果k值很大,这样处理的效率会非常低。以这种方式修改数组后,返回数组。可以多次选择同一个下标。原创 2024-06-03 11:16:00 · 372 阅读 · 0 评论 -
【二叉树算法题记录】450.删除二叉搜索树中的节点
对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定一个二叉搜索树的根节点。,删除二叉搜索树中的。原创 2024-06-03 10:31:27 · 228 阅读 · 0 评论 -
【贪心算法题记录】53. 最大子数组和
这道题我一开始想的是用双指针实现(实际上也是贪心的本质)。因为负数可能会对整个子数组具有负贡献,所以我们每次在。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。,但实际上也没有考虑完全,这只是负贡献的一种。上面的代码一开始判断负贡献那里我写的是。不过实际上用不着双指针,只用一个。还要小的话,说明还不如直接从。是数组中的一个连续部分。之后都要进行比较,如果。原创 2024-05-31 10:17:07 · 477 阅读 · 0 评论 -
【贪心算法题记录】376. 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。的大小来判断当前趋势是否是摆动的,直接想法是:两者一个小于0,一个大于0,就是摆动的趋势。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。通过上面的分析,我们可以写出下面的代码(原创 2024-05-29 12:43:47 · 825 阅读 · 0 评论 -
【贪心算法题记录】455. 分发饼干
先找到。原创 2024-05-27 10:52:56 · 229 阅读 · 0 评论 -
【回溯算法题记录】组合问题汇总
给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。原创 2024-05-14 11:09:50 · 333 阅读 · 0 评论 -
【二叉树算法题记录】701. 二叉搜索树中的插入操作
给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据,新值和原始二叉搜索树中的任意节点值都不同。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回。原创 2024-05-27 11:45:48 · 246 阅读 · 0 评论 -
【二叉树算法题记录】236. 二叉树的最近公共祖先
实际上我们写出的代码就已经包含了上面说的第二种情况。因为函数一开始就要判断当前节点是不是p或q,如果p或q一方本来就是最近公共祖先,那么他最后总会传递到最后。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(这题显然是要从下往上去看,而我们知道二叉树的遍历是从根节点开始的,但是处理顺序可以从下往上。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。,则这个节点就是他们的最近公共祖先。原创 2024-05-26 14:56:26 · 330 阅读 · 0 评论 -
【二叉树算法题记录】501. 二叉搜索树中的众数
首先我们遍历整个树,可以记录每个元素出现的次数(用map),然后对map进行排序,我们就能得到出现频率最高的元素。,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。给你一个含重复值的二叉搜索树(BST)的根节点。如果树中有不止一个众数,可以按。原创 2024-05-22 16:21:19 · 325 阅读 · 0 评论 -
【二叉树算法题记录】二叉搜索树题目汇总
返回以该节点为根的子树。如果节点不存在,则返回。,即如果我们走一个方向走到头了,要返回到上层走另一个方向。,通过和根节点判断就能确定搜索的方向。,判断其是否是一个有效的二叉搜索树。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)的根节点。给你一个二叉树的根节点。但是对于二叉搜索树,原创 2024-05-18 19:41:24 · 393 阅读 · 0 评论 -
【二叉树算法题记录】从中序与后序遍历序列构造二叉树,从前序与中序遍历序列构造二叉树
这样我们就能确定整棵树的根节点在。原创 2024-05-15 16:20:44 · 398 阅读 · 0 评论 -
【二叉树算法题记录】404. 左叶子之和
给定二叉树的根节点root,返回所有左叶子之和。原创 2024-05-12 09:57:25 · 225 阅读 · 0 评论 -
【二叉树算法题记录】二叉树的所有路径,路径总和——回溯
给你一个二叉树的根节点root,按,返回所有从根节点到叶子节点的路径。原创 2024-05-10 19:32:14 · 367 阅读 · 0 评论 -
【二叉树算法题记录】110. 平衡二叉树
给定一个二叉树,判断它是否是。什么是平衡二叉树?一个二叉树。原创 2024-05-07 21:10:17 · 263 阅读 · 0 评论 -
【二叉树算法题记录】222. 完全二叉树的节点个数
给你一棵 完全二叉树 的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。原创 2024-05-06 18:23:03 · 303 阅读 · 0 评论 -
【二叉树算法题记录】最大和最小深度
这样一来我们得到左右子树的最大深度,然后选择较大的那一个深度+1即为整体二叉树的最大深度。迭代法实际上就是层次遍历,我们遍历到左右孩子都为空的节点就可以返回了,它所在层数一定是二叉树的最小深度。给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。:由于是先得到左右子树的最大深度,再得到根节点的最大深度,所以是。递归法实际上可以简化成寻找根节点。原创 2024-05-06 14:47:34 · 379 阅读 · 0 评论 -
【二叉树算法题记录】101. 对称二叉树
给你一个二叉树的根节点root, 检查它是否轴对称。原创 2024-04-26 17:04:02 · 187 阅读 · 0 评论 -
【二叉树算法题记录】199. 二叉树的右视图
给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。原创 2024-04-25 16:29:46 · 264 阅读 · 0 评论 -
【二叉树算法题记录】226. 翻转二叉树
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2024-04-24 16:50:14 · 207 阅读 · 0 评论 -
【二叉树算法题记录】创建与遍历
输入:ABD###C#F##原创 2024-04-22 20:26:25 · 159 阅读 · 0 评论 -
【Leetcode】2007. 从双倍数组中还原原数组
一个整数数组original可以转变成一个数组changed,转变方式为将original中每个元素加入数组中,然后将所有元素。给你一个数组changed,如果change是数组,那么请你返回original数组,否则请返回空数组。original的元素可以以顺序返回。原创 2024-04-19 10:57:44 · 363 阅读 · 3 评论 -
【栈与队列算法题记录】347. 前 K 个高频元素——优先队列,小顶堆
给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按返回答案。原创 2024-04-17 19:43:31 · 377 阅读 · 0 评论 -
【队列的算法题记录】239. 滑动窗口最大值
上面用deque实现了我们需要的队列操作:pop、push和front。滑动窗口向后滑动时,pop可以弹出前端元素,push是加入后面的元素,front是获取当前队列中的最大值(因为我们实现的是单调递减队列)。那么我们具体是怎么让元素出入列同时保持单调递减的呢?原创 2024-04-15 17:10:10 · 222 阅读 · 0 评论 -
【栈的算法题记录】有效的括号,删除字符串中的所有相邻重复项,逆波兰表达式求值
遍历字符串s的时候,我们每碰到一个左括号就入栈一个它所匹配的右括号,碰到右括号的时候,看此时栈顶是否是相同类型的右括号,如果是,则这对括号是匹配的,如果不是相同类型或者没有括号,则就是不匹配或者是缺少右括号的。原创 2024-04-09 22:41:41 · 154 阅读 · 0 评论 -
【字符串算法题记录】28. 找出字符串中第一个匹配项的下标,459.重复的子字符串——KMP算法
这一题蛮简单,但是逻辑上容易忽略一些小细节。第二次修改后的如下,但是还是错了,因为我。原创 2024-03-29 22:20:13 · 194 阅读 · 0 评论 -
【字符串算法题记录】反转字符串中的单词(leetcode),右旋字符串(kama)——双指针以及反转的奇思妙用
因为字符串开头也可能有多个字符,所以我们的两个指针应该从头开始,用快指针判断当前字符是否是题目中的有效字符(非多余空格),慢的则用来将快指针指向字符赋值到自己。这应该是我们的最后一步,目的是定位到字符串中的单词,对它进行反转。这里我是用while循环到每个单词的末尾,代码随想录中是找到分隔空格来定位单词,两种方法都可以。这题的思路顺序是:移除多余空格(双指针法)——》反转整个字符串)——》反转字符串中每个单词。原创 2024-03-25 20:39:54 · 383 阅读 · 0 评论 -
【字符串算法题记录】54. 替换数字——双指针
其实这题不难,主要考察的是算法的效率。原创 2024-03-19 22:50:49 · 222 阅读 · 0 评论 -
【字符串算法题】541. 反转字符串 II
【代码】【字符串算法题】541. 反转字符串 II。原创 2024-03-18 22:43:58 · 371 阅读 · 0 评论 -
【哈希表算法题记录】15. 三数之和,18. 四数之和——双指针法
这题虽然放在哈希表的分类里面,但是用双指针法会更高效。之前的双指针我们要么是一头left一尾right,要么是快fast慢slow指针。这里是要计算三个数的和,我们首先对数组进行从小到大的排序,先固定一个指针指向i,然后以该指针为开始,设置左指针指向i+1,然后右指针指向数组的末尾。因为数组已经排序好了,我们只用看当前这三个数之和,如果比0小,说明左指针指向的数太小了,要向右移,如果比0大,说明右指针太大了,要向左移。这样我们就有了一个基本的逻辑。然而,这题有一个条件就是。原创 2024-03-09 20:28:03 · 410 阅读 · 0 评论 -
【哈希表算法题记录】383. 赎金信-数组
差不多,用map来制作哈希表空间消耗比较大,且费时,这题说了只有小写字母,所以哈希表长度只有26,我们。(可以看作是该字母能够使用的次数),如果不在则返回false。中的每个字母,首先判断它是否出现在map中,如果在则减去一次其。,那么这次使用是无效的,所以返回false。存放在map里,然后遍历。是否已经用完,也就是。原创 2024-03-07 15:08:31 · 376 阅读 · 0 评论