自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

接雨水和柱状图最大矩阵还得多练练。

2024-03-15 11:21:04 256 1

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

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

2024-03-14 12:33:25 121

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

使用单调栈主要有三个判断条件。当前遍历的元素T[i]小于栈顶元素T[st.top()]的情况当前遍历的元素T[i]等于栈顶元素T[st.top()]的情况当前遍历的元素T[i]大于栈顶元素T[st.top()]的情况。

2024-03-12 20:32:32 270

原创 代码随想录算法训练营第五十七天 647. 回文子串、516.最长回文子序列、动态规划章节总结

动规五部曲分别为:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组背包问题打家劫舍系列股票系列子序列系列。

2024-03-11 19:43:07 254

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

392. 判断子序列 - 力扣(LeetCode)状态转移方程// dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。// dp[i][j] 的定义和 1143.最长公共子序列一样// 继承之前匹配了的最大值// 这里也和 1143.最长公共子序列 一样,只不过舍去了dp[i-1][j],因为我们是对i进行一位一位连续的匹配115. 不同的子序列 - 力扣(LeetCode)状态转移方程。

2024-03-10 21:05:32 188

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

【代码】代码随想录算法训练营第五十四天 392.判断子序列、 115.不同的子序列。

2024-03-08 20:52:50 161

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

理解成最长公共子序列,一模一样。

2024-03-07 21:09:54 223

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

今天的题目比较难想到的是300. 最长递增子序列 - 力扣(LeetCode),因为其要求的递增子序列是不一定是要连续的,所以双层循环,第一层确定nums[i] 作为尾部,第二层遍历[0, i)寻找满足nums[j] < nums[i](严格递增)的数组索引j,这样以为nums[j] 为尾部对应的dp[j]就可以加上新的尾部nums[i],递推公式为dp[i] = Math.max(dp[i], dp[j] + 1)674. 最长连续递增序列 - 力扣(LeetCode)

2024-03-06 18:19:33 151

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

121. 买卖股票的最佳时机 - 力扣(LeetCode)贪心:取最左最小值,取最右最大值,那么得到的差值就是最大利润// 只能买一次,所以只能是0 - prices[i]122. 买卖股票的最佳时机 II - 力扣(LeetCode)贪心:因为可以不限次数买卖股票,收集正利润即可// 注意这里是和121. 买卖股票的最佳时机唯一不同的地方。因为可以多次购买,所以需要继承自dp[i - 1][1]的状态123. 买卖股票的最佳时机 III - 力扣(LeetCode)

2024-03-05 12:46:54 1467

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

就是在122. 买卖股票的最佳时机 II - 力扣(LeetCode)的基础上增加了更多状态Ⅱ可以无限次持有, dp = new int[len] [2], 0: 表示持有, 1: 表示不持有Ⅲ只有两次持有机会,所以有五种状态 :​ 0: 没有操作, 1: 第一次持有, 2: 第一次不持有, 3: 第二次持有, 4: 第二次不持有Ⅳ有k次机会,所以有2 * k + 1种状态:​ 0: 没有操作, 1: 第一次持有, 2: 第一次不持有, 3: 第二次持有…

2024-03-04 12:54:19 157

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

121. 买卖股票的最佳时机 - 力扣(LeetCode)贪心:找到最低价值(必须在左边),找到最高价值(必须在右边),更新profitdp:如果第i天持有股票即dp[i][0], 那么可以由两个状态推出来第i-1天就持有股票,那么就保持现状,所得现金就是昨天持有股票的所得现金 即:dp[i - 1][0]第i天买入股票,所得现金就是买入今天的股票后所得现金即:-prices[i]

2024-03-03 23:34:28 229

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

打家劫舍基本的递推公式:dp[i] = max(dp[i - 2] + nums[i], dp[i-1])213. 打家劫舍 II - 力扣(LeetCode)分三种情况:情况一:考虑不包含首尾元素情况二:考虑包含首元素,不包含尾元素情况三:考虑包含尾元素,不包含首元素最后337. 打家劫舍 III - 力扣(LeetCode)则是树形dp入门题目,需要使用后续遍历, 递归三部曲 + 动规五部曲。

2024-03-02 23:13:26 213

原创 代码随想录算法训练营第四十六天 139.单词拆分、多重背包(了解)、 背包总结

代码随想录 (programmercarl.com)

2024-03-02 16:15:42 1813

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

我们要求的集合不强调是组合还是排列就先物品还是先背包没有要求强调组合,先物品强调排列,先背包。

2024-03-02 15:38:51 200

原创 代码随想录算法训练营第四十四天 完全背包 、零钱兑换 II 、组合总和 Ⅳ

首先要明白二维数组的递推过程,然后才能看懂二维变一维的过程。假设目前有背包容量为10,可以装的最大价值, 记为g(10)。即将进来的物品重量为6。价值为9。那么此时可以选择装该物品或者不装该物品。如果不装该物品,显然背包容量无变化,这里对应二维数组,其实就是取该格子上方的格子复制下来,就是所说的滚动下来,直接g【10】 = g【10】,这两个g【10】要搞清楚,右边的g【10】是上一轮记录的,也就是对应二维数组里上一层的值,而左边是新的g【10】,也就是对应二维数组里下一层的值。

2024-03-02 14:34:15 1328

原创 代码随想录算法训练营第四十四天 完全背包 、零钱兑换 II 、组合总和 Ⅳ

首先要明白二维数组的递推过程,然后才能看懂二维变一维的过程。假设目前有背包容量为10,可以装的最大价值, 记为g(10)。即将进来的物品重量为6。价值为9。那么此时可以选择装该物品或者不装该物品。如果不装该物品,显然背包容量无变化,这里对应二维数组,其实就是取该格子上方的格子复制下来,就是所说的滚动下来,直接g【10】 = g【10】,这两个g【10】要搞清楚,右边的g【10】是上一轮记录的,也就是对应二维数组里上一层的值,而左边是新的g【10】,也就是对应二维数组里下一层的值。

2024-02-28 00:41:06 554

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

【代码】代码随想录算法训练营第四十三天 1049. 最后一块石头的重量 II 、 494. 目标和 、 474.一和零。

2024-02-26 23:23:02 204

原创 代码随想录算法训练营第四十一天 01背包问题 二维、01背包问题 一维 、 416. 分割等和子集

01背包大概是有了一点头绪,目前能够理解典型的01背包问题,但是01背包的变种就不太明白。

2024-02-26 16:28:02 276

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

# 总结今天的两题类似,题目读起来比较难以理解,但是掌握了dp递推公式的就能简单解出(能想到递推公式还是难呀)

2024-02-23 14:06:06 144

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

当初自己做出来的,还算是比较简单,这次使用五部曲更好的体会一下dp的解题步骤。

2024-02-22 11:58:15 117

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

动态规划中每一个状态一定是由上一个状态推导,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组。

2024-02-22 11:18:29 410

原创 代码随想录算法训练营第三十七天 738.单调递增的数字 、 968.监控二叉树 (跳过)

以98为例, str[i] = 9, str[i + 1] = 8, 要使其变为小于等于98的整数,则 str[i] = 9 - 1 = 8,然后将str[i + 1] 赋值为8以332为例, str[i] = 3, str[i + 1] = 2, 要使其小于32,则str[i] = 3 - 1 = 2, str[i + 1] = 9。

2024-02-20 23:01:17 160

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

掌握数组的Lambda排序方法这样就是升序排序,若a[0] - b[0] < 0, a 在前 b 在后若a[0] - b[0] >= 0, b 在前 a 在后实现的排序同上,但是这样使用Integer内置比较方法,不会溢出。

2024-02-19 23:34:53 317

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

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

2024-02-18 19:49:45 189

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

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

2024-02-17 23:22:50 170

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

如何分解呢?假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。理解上图就会做了!!!

2024-02-15 23:18:11 291

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

但是这样的步骤过于理论化了,贪心问题的求解往往不会局限在这四个步骤之中。// 更新最大值res。总而言之,贪心没有固定套路。

2024-02-15 23:17:17 213

原创 代码随想录算法训练营第三十天 回溯算法总结、332.重新安排行程、51. N皇后、37. 解数独

37. 解数独回溯就是递归的副产品,只要有递归就会有回溯回溯就是一个暴力搜索法,并不是什么高效的算法组合:N个数里面按一定规则找出k个数的集合分割:一个字符串按一定规则有几种切割方式子集:一个N个数的集合里有多少符合条件的子集排列:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等其他。

2024-02-08 19:41:30 291

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

组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果。

2024-02-07 23:35:18 242

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

今天的难点主要是93. 复原 IP 地址 - 力扣(LeetCode)中的判断一个段位是否合法## 总结:今天的难点主要是 [93. 复原 IP 地址 - 力扣(LeetCode)](https://leetcode.cn/problems/restore-ip-addresses/) 中的判断一个段位是否合法。

2024-02-06 23:16:33 244

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

这里主要分析什么时候要用到startIndex。我们来分析一下切割,

2024-02-06 22:55:19 319

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

明日进行二叉树的总结。

2024-02-03 22:47:09 105

原创 代码随想录算法训练营第二十四天 回溯理论基础、77. 组合

递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。,是的,我指的是所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,直接套用公式便可以写出来,但是这里建议进行。

2024-02-02 19:20:07 208

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

代码随想录 (programmercarl.com)

2024-02-02 14:45:40 296

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

正常在二叉搜索树中寻找。

2024-01-31 23:29:47 288

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

题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode)递归中序遍历,维护一个min_value注意min_value初始化为Integer.MAX_VALUE501.二叉搜索树中的众数题目链接:501. 二叉搜索树中的众数 - 力扣(LeetCode)这里要维护一个max_count236. 二叉树的最近公共祖先题目链接:236. 二叉树的最近公共祖先 - 力扣(LeetCode)后序遍历,新鲜,多熟悉熟悉

2024-01-30 22:21:04 222 1

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

确定递归函数的参数和返回值确定递归的终止条件确定递归的单层处理逻辑。

2024-01-29 21:10:14 154

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

题目链接:513. 找树左下角的值 - 力扣(LeetCode)用层序遍历很简答,就不去想递归法了112. 路径总和题目链接:112. 路径总和 - 力扣(LeetCode)106.从中序与后序遍历序列构造二叉树题目链接:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)有难麻烦,没时间自己写,看看Carl的方法吧

2024-01-29 21:01:03 138

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

前两题都能胡乱ac,第三题不太会。感觉二叉树递归始终没有章法,明天或后天抽时间看Carl视频再总结一下。

2024-01-26 22:35:23 269 1

原创 代码随想录算法训练营第十六天 104.二叉树的最大深度 (优先掌握递归)、111.二叉树的最小深度(优先掌握递归)、222.完全二叉树的节点个数(优先掌握递归)

二叉树:主要是又把层序遍历复习了。递归前序遍历我基本上已经没问题了。现在二叉树的翻转和是否对称对我来说可能还要难些今天自己复习了一下数组+双指针,主要是以下题目:27. 移除元素 - 力扣(LeetCode)快慢指针法:用一个index(慢指针)表示待更新的新数组下标,fast指针找到一个!= val的值就nums[index++]26. 删除有序数组中的重复项 - 力扣(LeetCode)同上,关键逻辑是int index = 1, fast = 1 // index指向新数组待更新的下标。

2024-01-25 20:52:09 241

空空如也

空空如也

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

TA关注的人

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