自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 代码随想录算法训练营第58天|739. 每日温度,496.下一个更大元素 I

思路:先对nums2中的元素找到一个result数组,result中存的是下一个更大元素的位置,再遍历nums1中的元素,找到其在nums2中的下标,再去result中查找对应下标的值。本体主要的思路是先使用map进行快速选择元素对应的下标,以及在另一数组中的查找,接下来使用单调栈进行判断,需注意的一点是。通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。我的思路如下,但是略浪费空间,但是容易理解,而且栈中直接存放数值而不是下标,更方便。

2023-04-27 13:51:03 771 1

原创 代码随想录算法训练营第57天|647. 回文子串,516.最长回文子序列

【代码】代码随想录算法训练营第57天|647. 回文子串,516.最长回文子序列。

2023-04-26 15:44:02 606

原创 代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离

【代码】代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离。

2023-04-25 15:55:14 426

原创 代码随想录算法训练营第55天|392.判断子序列,115.不同的子序列

使用双指针法很简单,这里采用动态规划来解决。

2023-04-24 15:51:42 522

原创 代码随想录算法训练营第53天|1143.最长公共子序列,1035.不相交的线,53. 最大子序和

本题说是求绘制的最大连线数,其实就是求两个字符串的最长公共子序列的长度。

2023-04-22 14:24:45 179

原创 代码随想录算法训练营第52天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

【代码】代码随想录算法训练营第52天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组。

2023-04-21 15:29:16 189

原创 代码随想录算法训练营第51天|309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

【代码】代码随想录算法训练营第51天|309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费。

2023-04-20 15:15:41 76

原创 代码随想录算法训练营第50天|123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV

【代码】代码随想录算法训练营第50天|123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV。

2023-04-20 14:59:56 383

原创 代码随想录算法训练营第49天|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II

【代码】代码随想录算法训练营第49天|121. 买卖股票的最佳时机,122.买卖股票的最佳时机II。

2023-04-19 21:57:19 381

原创 代码随想录算法训练营第48天|198.打家劫舍,213.打家劫舍II,337.打家劫舍III

这道题目算是树形dp的入门题目,因为是在树上进行状态转移,下面以递归三部曲为框架,其中融合动规五部曲的内容来进行讲解。

2023-04-19 21:50:15 311

原创 代码随想录算法训练营第46天| 139.单词拆分

【代码】代码随想录算法训练营第46天| 139.单词拆分。

2023-04-15 22:22:31 61

原创 代码随想录算法训练营第45天| 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数

【代码】代码随想录算法训练营第45天| 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数。

2023-04-15 20:47:24 357

原创 代码随想录算法训练营第44天| 518. 零钱兑换 II,377. 组合总和 Ⅳ

【代码】代码随想录算法训练营第44天| 518. 零钱兑换 II,377. 组合总和 Ⅳ。

2023-04-13 15:50:44 368

原创 代码随想录算法训练营第43天| 1049. 最后一块石头的重量 II,494. 目标和,474.一和零

1049. 最后一块石头的重量 II,难度:中等【实现代码】public :i ++) {i ++) {j --) {} };【解题思路】本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。确定dp数组以及下标的含义:dp[j]表示容量(这里说容量更形象,其实就是重量)为j的背包,最多可以背最大重量为dp[j]。

2023-04-12 10:48:01 581

原创 代码随想录算法训练营第42天| 416. 分割等和子集

可以使用回溯来解决,因为数据量小。这也提示我,如果看到一个题目可以用回溯算法解决,那么去看数据量,如果数据量小则使用回溯来解决,数据量大则考虑使用贪心或者动态规划。当然本题使用回溯算法求解出每一种情况进行判断也可以,但是会超时,因为数据量大。和本题类似的一个题目。为什么这一题使用01背包来做?

2023-04-11 16:01:01 342

原创 代码随想录算法训练营第41天| 343. 整数拆分,96.不同的二叉搜索树

【代码】代码随想录算法训练营第41天| 343. 整数拆分,96.不同的二叉搜索树。

2023-04-10 15:27:44 380

原创 代码随想录算法训练营第39天| 62.不同路径,63. 不同路径 II

【代码】代码随想录算法训练营第39天| 62.不同路径,63. 不同路径 II。

2023-04-09 09:28:37 516

原创 代码随想录算法训练营第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

【代码】代码随想录算法训练营第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯。

2023-04-07 15:46:22 325

原创 代码随想录算法训练营第37天|738. 单调递增的数字,968. 监控二叉树

所以思路是,从低位开始向高位判断,也就是保证高位是递增的状态。当高位出现减一时,则后边的位应该都为9,数字才是最大的。本题的大致思想是,为了要找到最小数量的照相机,则需要在叶子节点的父节点处放置照相机,之后每隔两个节点再放置照相机。我刚开始想到了本题的思路是从数字的高位开始判断,但是没有想到后边的位是直接补充9。那么节点的状态有 0:无覆盖、1:有照相机和2:有覆盖三种。空节点的状态应该为2。则需要有四种情况需要考虑:(也就是对左右节点的状态组合,经过整理后一共有三种情况)

2023-04-06 15:45:00 307

原创 代码随想录算法训练营第36天|435. 无重叠区间,763.划分字母区间,56. 合并区间

首先是对数据进行排序,按照左值或者右值都可以,这里按照右值进行升序排列,当前的左值小于前一个的右值时,说明二者有重叠,则应该删除当前的区间,并且更新当前区间的右值为二者的最小值(因为并没有实际的将元素删除)因为是要合并区间那么就需要考虑已经存入的区间和当前区间的关系,所以是将第一个元素存起来,再进行依次比较。使用hash数组记录每一个字母存在的最大索引,当前索引等于其经过的字母所在索引的最大值时,则开始划分区间。我本意是想找当前字母在字符串中的最大索引,再找区间内其他字母的最大索引。和今天的第一题很像。

2023-04-05 21:16:27 264

原创 代码随想录算法训练营第35天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球

之后找重叠的范围,每次要找到相邻两个坐标的最大重叠坐标x;如果下一个的第一个x大于前一个坐标的第二个x,则需要重新射一箭。因为vector的底层结构是数组,插入和删除操作都是O(n^2),所以使用链表进行存储新的队列。这一题主要是找重叠的坐标范围,首先也是对坐标进行排序,按照第一个x进行升序排列。需要注意的是,5块和10块是分开计数的,而且当十块不够的时候可以使用5块的。首先是对原数组进行排列,按照身高降序和k值升序的顺序排列。接着是插入到新的数组里,应该按照对应k值进行操作。

2023-04-04 19:47:14 432

原创 代码随想录算法训练营第34天|1005.K次取反后最大化的数组和,134. 加油站,135. 分发糖果

关键点在于要按绝对值排序,再将所有小于0的数取反。剩余的k就只操作最小的数,而且是只判断是否是奇数,因为操作偶数次后的值不变。贪心思想,从前往后遍历一遍,再从后向前遍历一遍,但是从后向前更新糖果时,要比较当前有的糖果和后一个+1糖果的最大值。贪心策略,从0索引开始,每次剩余流量累加的和不小于0时,则可以从0开始;最后总的累加值小于0,则返回-1;否则可以从i+1处开始跑一圈。如果从在i处,累加的值小于0,则从第i+1个开始重新累加。看似一道简单的题目,也不太简单。

2023-04-03 16:23:22 30

原创 代码随想录算法训练营第32天|122.买卖股票的最佳时机II,55. 跳跃游戏,45.跳跃游戏II

本题目求最小的跳跃次数,因为题目中已经说明可以跳跃到终点,所以只需要统计最大覆盖范围超过终点时的步数。也就是说,在当前最大覆盖范围时找当前覆盖范围内下一个比当前范围大的最大范围,当下一个最大范围超过了终点时,就结束了。卡哥的思路是分析覆盖的范围,当跳跃覆盖的范围可以到达或者超过终点时,就可以跳跃到终点。我的考虑是当数组中出现0时,当不能跳过这个0时,那么就不能跳跃到终点。还是卡哥的思路简单,利润是可以分解的,只需要将所有正利润求和,就可以得到最终的利润。的实现,这样也能AC,但是需要考虑的情况太多。

2023-04-01 16:52:57 46

原创 代码随想录算法训练营第29天|491.递增子序列,46.全排列,47.全排列II

本题目和上一题类似,难点在于去重。子集问题使用回溯算法解决。排列问题使用回溯算法解决。

2023-03-31 20:54:21 31

原创 代码随想录算法训练营第31天|455.分发饼干,376. 摆动序列,53. 最大子序和

本题与子集-ii相似,但是去重方法不同,因为不能对原数组排序,所以重复的元素可能不是相邻的,所以与子集-ii有区别,这里采用数组哈希或者set集合去重。全排列问题,采用回溯算法实现,难点在于去重。相当于取子集问题,采用回溯算法实现。全排列问题,采用回溯算法实现。

2023-03-31 10:44:26 56

原创 代码随想录算法训练营第28天|93.复原IP地址,78.子集,90.子集II

与子集问题的解法是一样的,但是要添加一个去重的操作,去重与组合总和中的去重原理是一样的。切割问题采用回溯算法解决。子集问题采用回溯算法解决。子集问题采用回溯算法解决。

2023-03-29 21:47:26 103

原创 代码随想录算法训练营第27天|39. 组合总和,40.组合总和II,131.分割回文串

可以尝试画出递归的执行过程,或者直接把每一步递归的过程用代码描述出来,非常清楚!组合问题使用回溯算法解决。这一题和上一题基本类似,难点在于去重。切割问题使用回溯算法解决。步骤是先切割再判断回文串。实例为“aab”,打印的结果是。组合问题使用回溯算法解决。

2023-03-26 23:08:06 44

原创 代码随想录算法训练营第25天|216.组合总和III,17.电话号码的字母组合

组合问题使用回溯算法。组合问题使用回溯算法。

2023-03-25 13:24:15 28

原创 代码随想录算法训练营第24天|77. 组合

采用回溯算法解决组合(切割、子集、排列和棋盘)问题。

2023-03-24 19:42:02 40

原创 代码随想录算法训练营第23天|669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树

【代码】代码随想录算法训练营第23天|669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树。

2023-03-23 16:49:00 36

原创 代码随想录算法训练营第21天|530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先

【代码】代码随想录算法训练营第21天|530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先。

2023-03-23 16:43:11 28

原创 代码随想录算法训练营第22天|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点

【代码】代码随想录算法训练营第21天|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点。

2023-03-22 19:48:16 38

原创 代码随想录算法训练营第20天|654.最大二叉树,617.合并二叉树, 700.二叉搜索树中的搜索,98.验证二叉搜索树

【代码】代码随想录算法训练营第20天|654.最大二叉树,617.合并二叉树, 700.二叉搜索树中的搜索,98.验证二叉搜索树。

2023-03-20 21:38:29 82

原创 代码随想录算法训练营第18天|513.找树左下角的值 ,112. 路径总和,106.从中序与后序遍历序列构造二叉树

代码随想录算法训练营第18天|513.找树左下角的值 ,112. 路径总和,106.从中序与后序遍历序列构造二叉树

2023-03-19 16:20:55 52

原创 代码随想录算法训练营第17天|110.平衡二叉树 ,257. 二叉树的所有路径,404.左叶子之和

代码随想录算法训练营第17天|110.平衡二叉树 ,257. 二叉树的所有路径,404.左叶子之和

2023-03-17 17:20:35 115

原创 代码随想录算法训练营第16天|104.二叉树的最大深度,559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

代码随想录算法训练营第16天|104.二叉树的最大深度,559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

2023-03-17 16:50:37 177

原创 代码随想录算法训练营第15天|102. 二叉树的层序遍历,226.翻转二叉树,101.对称二叉树

可以看到,这里的写法也就是判断递归的返回条件和参数不同,重点理解的是通过后序遍历的方式进行节点的一些操作达到目的。我最开始使用的是深度优先遍历,找到一个节点,交换左右节点即可。这里采用的后序遍历是这样的,通过比较。把每一层的节点放进队列即可。

2023-03-15 15:32:10 378

原创 代码随想录算法训练营第14天|144. 二叉树的前序遍历,145. 二叉树的后序遍历,94. 二叉树的中序遍历

【统一迭代法】在统一迭代法中,当插入中间节点时,只需再其后插入一个空节点,即使用空节点作为标记。如果没有加入空节点作为标记,则会当成左节点或者右节点继续把下层节点压栈,陷入死循环;加入空节点,多了一次弹栈操作,即弹出了中间节点,从而可以向上层返回。【迭代法】在迭代法中,因为中序的访问节点和放进结果集中的节点不同,即需要一直找到左节点,当遇到中间节点时需要再往下找一层,当遇到空节点时才开始存放结果,所以与前序和后序的写法不同;【递归法】在递归法中,按照遍历的顺序进行递归或者放进结果集中,即可统一写法;

2023-03-15 10:30:33 396

原创 代码随想录算法训练营第13天|239. 滑动窗口最大值,347. 前 K 个高频元素

代码随想录算法训练营第13天|239. 滑动窗口最大值,347. 前 K 个高频元素

2023-03-13 20:15:19 388

原创 代码随想录算法训练营第11天| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

代码随想录算法训练营第11天| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

2023-03-10 22:51:56 515

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除