代码随想录
yec10
这个作者很懒,什么都没留下…
展开
-
一刷总结篇
也养成了记录博客的好习惯吧,不过一刷有时也偷懒没跟上,但总体而言是比没刷代码随想录之前的状态要好。还是要记得当前目标是什么(深抓主要矛盾)。二刷代码随想录时每题要充分思考并且刷之前放过的题(如扩展提等)加油!努力把自己变得更强!原创 2023-07-25 16:36:58 · 241 阅读 · 0 评论 -
代码随想录60天|总结+84.柱状图中最大的矩形
为期两个月的训练营结束了,在此训练营中我收获了很多,了解了各种算法以及模板,但在训练过程中我也有些偷懒情况。虽说有些是自己写完的但大多数都是一摸黑后看题解写的。希望自己开始二刷时能一遍一遍自己做出来,草稿写出来。另外:每天必须完成计划,不然后期进度老是在追赶QAQ。LeetCode84.柱状图中最大的矩形。原创 2023-07-23 17:35:51 · 111 阅读 · 0 评论 -
代码随想录第59天|503.下一个更大元素II , 42. 接雨水
LeetCode503.下一个更大元素II。LeetCode42. 接雨水。原创 2023-07-23 17:11:11 · 109 阅读 · 0 评论 -
代码随想录第58天|739. 每日温度,496.下一个更大元素 I
因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。LeetCode496.下一个更大元素 I。LeetCode739.每日温度。时间复杂度为O(n)。什么时候用单调栈呢?原创 2023-07-21 21:28:52 · 90 阅读 · 0 评论 -
代码随想录第57天| 647. 回文子串, 516.最长回文子序列
LeetCode 516.最长回文子序列。LeetCode647. 回文子串。原创 2023-07-21 16:55:52 · 50 阅读 · 0 评论 -
代码随想录第56天| 583. 两个字符串的删除操作 ,72. 编辑距离
LeetCode583. 两个字符串的删除操作。LeetCode72.编辑距离。原创 2023-07-20 17:08:09 · 70 阅读 · 0 评论 -
代码随想录第55天| 392.判断子序列 , 115.不同的子序列
LeetCode115.不同的子序列。LeetCode392.判断子序列。原创 2023-07-18 12:27:44 · 85 阅读 · 0 评论 -
代码随想录第53天|1143.最长公共子序列, 1035.不相交的线,53. 最大子序和
LeetCode.1143.最长公共子序列。LeetCode1035.不相交的线。LeetCode53. 最大子序和。原创 2023-07-18 11:28:37 · 162 阅读 · 0 评论 -
代码随想录第52天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组
LeetCode674. 最长连续递增序列。LeetCode718. 最长重复子数组。LeetCode300.最长递增子序列。原创 2023-07-17 15:27:35 · 386 阅读 · 0 评论 -
代码随想录第51天| 309.最佳买卖股票时机含冷冻期 , 714.买卖股票的最佳时机含手续费
LeetCode714.买卖股票的最佳时机含手续费。LeetCode309.最佳买卖股票时机含冷冻期。原创 2023-07-17 13:07:52 · 167 阅读 · 0 评论 -
代码随想录第50天|123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV
LeetCode123.买卖股票的最佳时机III。LeetCode188.买卖股票的最佳时机IV。原创 2023-07-16 15:03:09 · 229 阅读 · 0 评论 -
代码随想录第49天| 121. 买卖股票的最佳时机 , 122.买卖股票的最佳时机II
LeetCode 122.买卖股票的最佳时机II。LeetCode121. 买卖股票的最佳时机。原创 2023-07-16 14:19:24 · 232 阅读 · 0 评论 -
代码随想录第48天|198.打家劫舍, 213.打家劫舍II ,337.打家劫舍III
LeetCode 337.打家劫舍III。LeetCode213.打家劫舍II。LeetCode198.打家劫舍。原创 2023-07-13 18:02:54 · 365 阅读 · 0 评论 -
代码随想录第46天| 139.单词拆分 ,背包问题总结
LeetCode139.单词拆分。原创 2023-07-09 22:32:22 · 278 阅读 · 0 评论 -
代码随想录第42天|01背包问题,416. 分割等和子集
LeetCode416.分割等和子集。原创 2023-07-04 15:01:44 · 113 阅读 · 0 评论 -
代码随想录45天| 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数
LeetCode279.完全平方数。LeetCode322. 零钱兑换。70.爬楼梯(进阶)原创 2023-07-07 21:50:27 · 58 阅读 · 0 评论 -
代码随想录第44天|完全背包,518. 零钱兑换 II ,377. 组合总和 Ⅳ
遍历顺序背包容量从小到大遍历,01背包从大到小遍历。LeetCode377. 组合总和 Ⅳ。先遍历物品再遍历背包是组合数!先遍历背包再遍历物品是排列数!518. 零钱兑换 II。原创 2023-07-06 12:39:09 · 59 阅读 · 0 评论 -
代码随想录第43天|1049. 最后一块石头的重量 II , 494. 目标和 ,474.一和零
1049. 最后一块石头的重量 II。LeetCode474.一和零。LeetCode494.目标和。原创 2023-07-05 13:11:50 · 113 阅读 · 0 评论 -
代码随想录第41天|343. 整数拆分 ,96.不同的二叉搜索树
dp[3],就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量。元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量。元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量。有2个元素的搜索树数量就是dp[2]。有1个元素的搜索树数量就是dp[1]。LeetCode343.整数拆分。原创 2023-07-03 14:39:21 · 137 阅读 · 0 评论 -
代码随想录第39天|62.不同路径 , 63. 不同路径 II
LeetCode63.不同路径II。LeetCode62.不同路径。原创 2023-07-01 14:18:17 · 172 阅读 · 0 评论 -
代码随想录第18天|找树左下角的值,路径总和,从中序和后序遍历序列构造二叉树
以 后序数组的最后一个元素为切割点,先切中序数组,根据中序数组,反过来再切后序数组。如果要搜索其中一条符合条件的路径,那么递归一定需要返回值,因为遇到符合条件的路径了就要及时返回。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返回值。第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点。第五步:切割后序数组,切成后序左数组和后序右数组。原创 2023-06-11 17:32:30 · 903 阅读 · 0 评论 -
代码随想录第17天|110.平衡二叉树, 257. 二叉树的所有路径, 404.左叶子之和
题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。LeetCode257. 二叉树的所有路径。LeetCode110.平衡二叉树。LeetCode404.左叶子之和。在做二叉树递归和回溯时,比较高度必然要后序遍历。原创 2023-06-09 21:54:33 · 980 阅读 · 0 评论 -
代码随想录第22天|235. 二叉搜索树的最近公共祖先 , 701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点
LeetCode235.二叉搜索树的最近公共祖先。LeetCode701.二叉搜索树中的插入操作。LeetCode450.删除二叉搜索树中的节点。原创 2023-06-14 21:32:59 · 756 阅读 · 0 评论 -
代码随想录第27天|组合总和,组合总和II ,分割回文串
LeetCode40.组合总和II。LeetCode131.分割回文串。LeetCode39.组合总和。原创 2023-06-20 20:13:58 · 623 阅读 · 0 评论 -
代码随想录第28天|93.复原IP地址, 78.子集,90.子集II
LeetCode93.复原IP地址。去重先排序,再看相同元素用过没有。LeetCode90.子集II。LeetCode78.子集。原创 2023-06-20 22:25:31 · 640 阅读 · 0 评论 -
代码随想录第29天|491.递增子序列 ,46.全排列 ,47.全排列 II
用一个used数组来看哪些数被取过,就不取了.LeetCode47.全排列II。LeetCode46.全排列。原创 2023-06-21 12:03:42 · 544 阅读 · 0 评论 -
代码随想录第31天|贪心理论基础,455.分发饼干 ,376. 摆动序列,53. 最大子序和
。所以唯一的难点就是如何通过局部最优,推出整体最优。LeetCode455.分发饼干。。LeetCode376.摆动序列。原创 2023-06-23 16:47:18 · 526 阅读 · 0 评论 -
代码随想录34天|1005.K次取反后最大化的数组和 , 134. 加油站 ,135. 分发糖果
这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边.这样从局部最优推出了全局最优,即:相邻的孩子中,评分高的孩子获得更多的糖果。LeetCode1005.K次取反后最大化的数组和。LeetCode134. 加油站。LeetCode135. 分发糖果。局部最优:每一次取最小的数变符号。全局最优:加起来数字最大。原创 2023-06-26 17:14:33 · 355 阅读 · 0 评论 -
代码随想录第35天|860.柠檬水找零 ,406.根据身高重建队列 , 452. 用最少数量的箭引爆气球
LeetCode860.柠檬水找零题目链接:860. 柠檬水找零 - 力扣(LeetCode)思路:局部贪心:优先用面额大的找零全局贪心:全部完成找零class Solution {public: bool lemonadeChange(vector<int>& bills) { int five = 0, ten = 0, twenty = 0; for(int bill : bills) { if原创 2023-06-28 16:11:04 · 324 阅读 · 0 评论 -
代码随想录第36天|435. 无重叠区间,763.划分字母区间,56. 合并区间
LeetCode763.划分字母区间。LeetCode435.无重叠区间。LeetCode56.合并区间。原创 2023-06-29 17:39:06 · 224 阅读 · 0 评论 -
代码随想录第37天| 738.单调递增的数字 , 968.监控二叉树 ,总结
LeetCode 738.单调递增的数字。LeetCode968.监督二叉树。原创 2023-06-29 19:35:00 · 284 阅读 · 0 评论 -
代码随想录第38天|动态规划理论基础,509. 斐波那契数 ,70. 爬楼梯,746. 使用最小花费爬楼梯
LeetCode746.使用最小花费爬楼梯。LeetCode509.斐波那契数。LeetCode70.爬楼梯。原创 2023-06-30 15:44:00 · 181 阅读 · 0 评论 -
代码随想录第32天|122.买卖股票的最佳时机II , 55. 跳跃游戏 ,45.跳跃游戏II
贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最小步数。不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。这个范围内,别管是怎么跳的,反正一定可以跳过来。LeetCode122.买卖股票的最佳时机II。LeetCode55.跳跃游戏。关键在于可跳的覆盖范围!原创 2023-06-25 21:34:48 · 464 阅读 · 0 评论 -
代码随想录第25天|216.组合总和III,17.电话号码的字母组合
LeetCode17.电话号码的字母组合。LeetCode216.组合总和|||原创 2023-06-20 15:18:57 · 657 阅读 · 0 评论 -
代码随想录第24天|回溯算法理论,77.组合,
回溯算法理论:回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。。,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。因为回溯法解决的都是在集合中递归查找子集,。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。原创 2023-06-16 16:48:37 · 732 阅读 · 0 评论 -
代码随想录第23天|669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树 ,538.把二叉搜索树转换为累加树
LeetCode538.把二叉搜索树转换为累加树。LeetCode108.将有序数组转换为二叉树。LeetCode669.修剪二叉搜索树。原创 2023-06-15 22:26:53 · 718 阅读 · 0 评论 -
代码随想录第21天| 530.二叉搜索树的最小绝对差, 501.二叉搜索树中的众数 , 236. 二叉树的最近公共祖先
1.不是二叉搜索树:最直观的方法一定是把这个树都遍历了,用map统计频率,把频率排个序,最后取前面高频的元素的集合。后序遍历(左右中)就是天然的回溯过程,可以根据左右子树的返回值,来处理中节点的逻辑。用双指针,前指针记录前一个节点的值,后指针记录当前节点的值。最近公共祖先自底向上查,二叉树回溯的过程就是从低到上。LeetCode530.二叉搜索树的最小绝对差。LeetCode236.二叉树的最近公共祖先。LeetCode501.二叉搜索树的众数。原创 2023-06-13 20:41:00 · 804 阅读 · 0 评论 -
代码随想录就第20天||654.最大二叉树, 617.合并二叉树 ,700.二叉搜索树中的搜索 ,98.验证二叉搜索树
构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。中序遍历下,输出的二叉搜索树节点的数值是有序序列。LeetCode700.二叉搜索树中的搜索。LeetCode98.验证二叉搜索树。LeetCode654.最大二叉树。LeetCode617.合并二叉树。凡是构造二叉树的都用前序遍历。原创 2023-06-12 23:02:52 · 843 阅读 · 0 评论 -
代码随想录第16天|二叉树的最大深度,二叉树的最小深度,完全二叉树的节点个数
对于情况二,分别递归左孩子,和右孩子,递归到某一深度一定会有左孩子或者右孩子为满二叉树,然后依然可以按照情况1来计算。那么使用后序遍历,其实求的是根节点到叶子节点的最小距离,就是求高度的过程,不过这个最小距离 也同样是最小深度。本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。完全二叉树只有两种情况,情况一:就是满二叉树,情况二:最后一层叶子节点没有满。,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。LeetCode111.二叉树的最小深度。原创 2023-06-09 16:37:52 · 1006 阅读 · 0 评论 -
代码随想录第15天|二叉树的层序遍历,翻转二叉树,对称二叉树
本题遍历只能是“后序遍历”,因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等。对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了。遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。,所以在递归遍历的过程中,也是要同时遍历两棵树。LeetCode102.二叉树的层序遍历。LeetCode226.翻转二叉树。2.迭代法:可用dfs和bfs做。那么层序遍历可以不可以呢?原创 2023-06-07 23:01:38 · 1053 阅读 · 0 评论