自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第63天|84.柱状图中最大的矩形

【代码】代码随想录算法训练营第63天|84.柱状图中最大的矩形。

2023-10-10 20:02:40 262

原创 代码随想录算法训练营第62天|503.下一个更大元素II、42. 接雨水

【代码】代码随想录算法训练营第62天|503.下一个更大元素II、42. 接雨水。

2023-10-10 20:00:34 240

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

【代码】代码随想录算法训练营第60天|739. 每日温度、496.下一个更大元素 I。

2023-10-10 19:57:37 176

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

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

2023-10-10 19:54:09 141

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

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

2023-10-04 23:53:36 169

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

ps:leetcode有误。

2023-10-04 23:51:52 132

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

【代码】代码随想录算法训练营第56天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和。

2023-10-04 23:50:09 60

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

【代码】代码随想录算法训练营第55天|300.最长递增子序列。

2023-10-04 23:47:28 88

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

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

2023-10-04 23:45:09 50

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

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

2023-10-04 23:43:17 49

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

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

2023-10-04 23:41:40 49

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

【代码】代码随想录算法训练营第48天|198.打家劫舍、213.打家劫舍II、337.打家劫舍 III。

2023-10-04 23:39:02 42

原创 代码随想录算法训练营第46天|139.单词拆分、动态规划:多重背包、背包问题总结篇

https://leetcode.cn/problems/word-break/动态规划:多重背包背包问题总结篇

2023-10-04 23:36:06 186

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

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

2023-10-04 23:34:14 114

原创 代码随想录算法训练营第44天|动态规划:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ

【代码】代码随想录算法训练营第44天|动态规划:完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ。

2023-10-04 23:31:53 220

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

public://尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。j <= n;j--) {

2023-10-04 23:29:31 72

原创 代码随想录算法训练营第42天|动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、416. 分割等和子集

以上两个问题的代码未本地化保存。

2023-10-04 23:25:53 588

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

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

2023-10-04 23:22:41 107

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

简而言之加入判断是否存在障碍物即可。

2023-10-04 23:20:34 956

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

用两个数来循环。

2023-09-14 20:41:00 168

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

【代码】代码随想录算法训练营第37天|

2023-09-14 20:32:19 54

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

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

2023-09-12 22:44:28 48

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

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

2023-09-12 22:39:41 44

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

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

2023-09-12 22:35:48 136

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

一开始有一个比较复杂的思路,从后往前找,找到最先能跳到当前位置的上一点,然后循环。每一次跳跃的时候更新跳跃范围,看看最后能否覆盖到末尾。贪心算法:重要的是理解当前覆盖范围和下一步覆盖范围。

2023-09-09 00:07:55 75

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

今天怪忙的,没时间写思路了,直接放代码吧。

2023-09-09 00:02:27 121

原创 代码随想录算法训练营第30天| 51. N皇后、37. 解数独

N皇后有个特点便是,每一行有且只有一个皇后(在每一列也成立),所以我们可以分别在每一行放置皇后,判断某一行某个位置放置皇后是否和前面放置的皇后冲突,如果冲突就回溯,如果不冲突就进入下一行的递归。在每一个空位上分别从1填到9看看是否和已经填好的冲突,如果冲突的话就回溯,不冲突的话就递归下一个位置。解数独和n皇后有一些相似之处,就是要一个棋盘上操作。

2023-09-07 21:25:42 37

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

和前面的子集问题比较像,但是因为相同元素不是紧挨着的也不能排序,所以只能使用set容器来进行去重。本题重要的是遍历的起始位置,每一次遍历都是从头开始。和上一题很像,只是多了个排序和去重的逻辑。也可以复制一个list来直接操作list。利用一个used来记录元素是否使用过。

2023-09-06 10:46:01 153

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

思路是这样的,先限定一个path大小的值k,回溯得到大小为k的所有子集添加到result中,然后依次从k=0到k=nums.size()全部回溯一遍。后面发现其实就正常的回溯,只不过收集的条件从path大小达到要求改为每一步都收集……和前面那个回文串差不多,就是找各种方法来切割,然后判断是否合法就行。和上面的子集问题差不多,但是多了一个去重的需求。这道题我一开始想的很复杂。

2023-09-05 10:27:20 113

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

不断尝试用各种方法分割字符串,如果左串是回文串,那就将右串作为新的字符串继续循环,直到分无可分为止。2.使用一个vector<bool>来记录元素是否使用过。3.和前面一个used差不多,直接在当前元素节点上比较。1.使用一个set容器来记录已经出现过的元素。本题没什么特别的,和前面的组合问题有点像。本题和前一题有点类似,但麻烦的是去重。要去重的话有如下几种方法。

2023-09-04 15:19:07 19

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

当然还有一些处理方法,如果不用curSum的话,可以在每次回溯的时候把n减去当前节点的值,只要n==0时代表达到要求。没什么好说的,在普通组合的基础上加一个当前总和,如果当前总和等于n时才收集进结果之中。

2023-09-02 10:14:31 29

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

本题卡哥在代码随想录中写的思路已经非常详细了,没什么好说的。

2023-09-01 19:25:54 50

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

这个简单,魔改一下中序遍历,让遍历顺序为右、中、左;然后在这基础上添加一个pos变量作为累积值,每一个节点添加先前已经记录的pos变量,然后更新pos变量的值即可。修剪二叉搜索树容易出错的部分就是,当某节点小于最小范围时,它的右孩子可能在范围之内,但它右孩子的左孩子可能又不在范围内,所以要经历多重判断。其实思路很简单,找到数组的中位创建根节点,然后以中位为分割线分割两个数组,这两个数组对应的就是根节点的左孩子和右孩子,不断重复这个过程就行。

2023-08-31 11:24:20 24

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

情况3:该节点左右孩子都存在,删除该节点,让左孩子移动到该节点的位置,让右节点成为左节点的右孩子;若左节点本身存在右孩子,那就让右孩子成为左节点右孩子的右孩子,以此类推,直到将右节点重新加入二叉树中为止。根据二叉搜索树的定义,最近的公共祖先一定是遍历到[p.val, q.val]之间的数(假设p比q小)。如果当前节点比pq节点都大,那就往左继续遍历;如果当前节点比pq节点都小,那就往右遍历。情况2:该节点有左右孩子中的一个,删除该节点,将该节点的左右孩子移到该节点的位置。

2023-08-30 09:44:04 71 1

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

寻找众数和找最小绝对差是一个思路,需要用一个count变量来记录当前元素出现的次数,用一个maxcount来记录最大count,只要count比maxcount大了就更新maxcount并且更新result。和验证二叉搜索树其实是一个逻辑,利用一个pre来记录前一位的二叉树节点,再用一个min变量来记录当前节点和前一个节点的差值,只要差值比min记录的更小,就更新min。本题采用后序遍历,左、右、中的顺序更容易发现公共祖先。如果遍历到最后还没有找到目标节点就返回空节点。

2023-08-29 11:38:03 53

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

最大二叉树的核心就是分割,找到最大的节点创建根节点,然后将其左部和右部分别作为该根节点的左孩子和右孩子不断分割,直到分无可分为止。因为中序遍历左中右的特性,所以我们需要做的是后遍历的值一定不小于先遍历的值即可验证。③树1和树2存在一个节点,那就让该节点的值是它们中存在的值即可。②树1和树2都存在节点,让该节点位置树1和树2值相加即可。根据二叉搜索树的定义不断左右移动就可以了,思路不难。①该节点树1和树2都不存在,说明遍历到头了,返回。只要分清楚树1和树2存在的情况就行。要验证二叉搜索树的核心是中序遍历。

2023-08-28 18:20:18 48 1

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

本题的重要思路是分割,不断将已经给出的数组,创造根节点,去除数组中根节点后分割成左叶子和右叶子,然后再将他们作为新的遍历数组来创造新的根节点。思路:使用层序遍历应该是最简单的,每遍历到新的一层就记录这一层第一位的数值。这道题目要使用前序遍历,只需要在遍历的时候不断记录当前值总和的大小即可。当然也可以精简一下写法。

2023-08-26 10:39:22 21

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

思路:采取后序遍历思想,先后获得两个左右子树的深度,不断递归检查每个节点的左右子树深度相差是否超过1,如果超过的话说明二叉树不平衡。思路:采用后序遍历思想,寻找每一条路径,但比起单纯的遍历要多使用一个栈来储存已经走过的路径。遍历顺序无所谓,重要的是判断某个节点是不是左叶子节点。

2023-08-25 14:20:16 76 1

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

上面三道题昨天完成层序遍历的时候都完成了,今天就不再赘述了。

2023-08-24 20:23:28 53 1

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

分别以root的left和right节点作为根节点遍历二叉树,遍历方式不限,只要遍历左右顺序相反(比如一个左一个右),只要出现有不同的情况就可以返回false了。递归(在每一次遍历的时候寻找有没有left和right均为nullptr的节点,记录其深度,和当前记录的最小深度进行比较,最终得到一个最小深度。迭代(因为队列的特性,只要找到第一个左节点和右节点均为nullptr的节点就可以返回了)(采用从右遍历到左的做法,这样只要记录每一层的第一个节点就是最右节点)一路层序遍历到尾,记录最后一个元素的深度即可。

2023-08-23 16:42:17 66

空空如也

空空如也

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

TA关注的人

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