自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ACM模板

【代码】ACM模板。

2025-04-04 13:57:07 273

原创 力扣 LeetCode 84. 柱状图中最大的矩形(Day25:单调栈)

注意,需要在数组前后都补一个0,否则会出现无法计算的情况(单调递增和单调递减数组的情况,走不到计算那一步,或者走到该计算时,需要三个元素但只有两个元素)本质是求左边第一个比它矮的和右边第一个比它矮的,求出一个面积,然后在这些面积里取最大的。

2025-02-03 21:39:23 159

原创 力扣 LeetCode 42. 接雨水(Day25:单调栈)

栈顶元素的下一个元素(从栈顶往下第二个元素)为左边第一个更大的元素。使用sum累加得到的凹槽长x宽即可。单调栈找出右边第一个更大的元素。当前元素为右边第一个更大的元素。

2025-02-03 20:46:57 127

原创 力扣 LeetCode 503. 下一个更大元素II(Day25:单调栈)

那么我们可以双倍定义数组大小,并且取模,走后半部分时可以续接上,保证在环内。单调栈找下一个更大的数,并且有环。

2025-02-03 20:12:29 194

原创 力扣 LeetCode 496. 下一个更大元素I(Day25:单调栈)

换壳的单调栈,只需要增加一个map映射下标关系,其余思路大体一致。

2025-02-03 19:49:10 211

原创 力扣 LeetCode 739. 每日温度(Day25:单调栈)

这里是求右边第一个比它大的元素的下标之间的差值。单调栈的作用是存放之前遍历过的元素。

2025-02-03 19:13:46 275

原创 力扣 LeetCode 516. 最长回文子序列(Day24:动态规划)

【代码】力扣 LeetCode 516. 最长回文子序列(Day24:动态规划)

2025-02-02 17:43:33 223

原创 力扣 LeetCode 647. 回文子串(Day24:动态规划)

注意,Arrays.fill(dp[i], false)用于一维数组,所以需要添加一个循环帮助赋值。判断是否为回文串的方法:在两侧相同时看内层是否为true。dp数组的含义为区间[ i , j ]的回文子串的个数。

2025-02-02 17:32:46 214

原创 力扣 LeetCode 72. 编辑距离(Day24:动态规划)

增删替三种操作,增和删类似,操作word1和word2取其中一个即可。

2025-02-02 17:10:37 207

原创 力扣 LeetCode 583. 两个字符串的删除操作(Day24:动态规划)

注意根据dp的含义进行初始化,这里是最少删几个。

2025-02-02 16:54:53 229

原创 力扣 LeetCode 115. 不同的子序列(Day24:动态规划)

用s[ i-1 ]可以,不用也可以。

2025-02-02 12:46:58 172

原创 力扣 LeetCode 392. 判断子序列(Day24:动态规划)

不相等时忽略(删除) j 的元素,往前退一格。

2025-02-02 12:28:06 232

原创 力扣 LeetCode 53. 最大子数组和(Day24:动态规划)

dp[ i ] 为以nums[ i ]结尾最大连续和。

2025-02-02 11:55:36 110

原创 力扣 LeetCode 1035. 不相交的线(Day23:动态规划)

本质上是求最长公共子序列。

2025-01-26 16:31:51 189

原创 力扣 LeetCode 1143. 最长公共子序列(Day23:动态规划)

dp[ i ] [ j ]表示 i - 1 和 j - 1 结尾的最长公共子序列的长度。

2025-01-26 16:26:22 156

原创 力扣 LeetCode 718. 最长重复子数组(Day23:动态规划)

dp[ i ] [ j ]表示nums1[ i - 1 ]和nums2[ j - 1 ]结尾的最长重复序列的长度。注意是i - 1和j - 1,简化初始化。

2025-01-26 16:05:27 209

原创 力扣 LeetCode 674. 最长连续递增序列(Day23:动态规划)

dp[ i ]表示以nums[ i ]结尾的最长连续递增序列的长度,但最长的子序列长度不一定是以nums[ i ]结尾的,所以要用一个max记录最大值。注意是连续,所以会比较和前一个元素的大小,i 和 i - 1进行比较。

2025-01-26 12:10:37 279

原创 力扣 LeetCode 300. 最长递增子序列(Day23:动态规划)

dp[ i ]表示以nums[ i ]结尾的最长递增子序列的长度,但最长的子序列长度不一定是以nums[ i ]结尾的,所以要用一个max记录最大值。

2025-01-26 12:00:56 126

原创 力扣 LeetCode 714. 买卖股票的最佳时机含手续费(Day22:动态规划)

多减去一个手续费即可。

2025-01-25 14:00:40 143

原创 力扣 LeetCode 309. 买卖股票的最佳时机含冷冻期(Day22:动态规划)

对持有股票的状态进行拆分,拆分成持有和当天买入后持有,以区别冷冻期。1:不持有当天不卖出。注意:1和2是拆分的。

2025-01-25 13:54:11 161

原创 力扣 LeetCode 188. 买卖股票的最佳时机IV(Day22:动态规划)

与买卖股票III类似,这里为k,需要进行递推,初始化也有合理赋值。

2025-01-25 12:55:34 172

原创 力扣 LeetCode 123. 买卖股票的最佳时机III(Day22:动态规划)

【代码】力扣 LeetCode 123. 买卖股票的最佳时机III(Day22:动态规划)

2025-01-25 11:45:52 204

原创 力扣 LeetCode 122. 买卖股票的最佳时机II(Day22:动态规划)

区别在于可以多次买卖股票。

2025-01-25 11:18:33 157

原创 力扣 LeetCode 121. 买卖股票的最佳时机(Day22:动态规划)

二维数组0表示持有,1表示不持有(dp表示到第 i 天持有或不持有的最大金额)不持有可能是前一个状态就不持有,或者当前状态才卖出。持有可能是前一个状态就持有,或者当前状态才持有。

2025-01-25 11:04:34 142

原创 力扣 LeetCode 337. 打家劫舍III(Day21:动态规划)

res[0]不偷当前节点,那么左右子节点可以偷,取能偷和不能偷的最大值。res[1]要偷当前节点,那么左右子节点不能偷。res[0]代表不偷,res[1]代表偷。

2025-01-24 15:29:02 180

原创 力扣 LeetCode 198. 打家劫舍II(Day21:动态规划)

转换为两种情况,考虑首元素不考虑尾元素,考虑尾元素,不考虑首元素,作为参数传递即可。与打家劫舍的区别在于打家劫舍是线性的,这里是环。其余部分与打家劫舍一致。

2025-01-24 14:56:24 265

原创 力扣 LeetCode 198. 打家劫舍(Day21:动态规划)

考虑最后一间偷还是不偷,不偷则为dp[ i - 1 ],偷则为dp[ i - 2 ] + nums[ i ]

2025-01-24 14:33:22 167

原创 力扣 LeetCode 139. 单词拆分(Day21:动态规划)

dp[ i ]为true的同时,如果 i 到 j 的字符串在字典中,那么区间[ i , j ] 就实现了判断,dp[ j ]此时为true。dp[ j ]表示长度为 j 的字符串为true的话,则在字典中找得到单词。完全背包问题,字符串长度为背包容量,字典中的单词为物品,对背包进行填充。此题为排列问题,先背包,再物品。

2025-01-24 12:51:07 144

原创 力扣 LeetCode 279. 完全平方数(Day20:动态规划)

因为是最小值,所以初始化为较大的数防止覆盖。完全背包问题,可以无限次使用同一个物品。因为要的是个数,所以用+1。

2025-01-23 12:54:42 286

原创 力扣 LeetCode 322. 零钱兑换(Day20:动态规划)

因为是最小值,所以初始化为较大的数防止覆盖。完全背包问题,可以无限次使用同一个物品。因为要的是个数,所以用+1。

2025-01-23 12:33:09 164

原创 力扣 LeetCode 377. 组合总和IV(Day20:动态规划)

加一个 if 条件判断。

2025-01-23 12:13:28 104

原创 力扣 LeetCode 518. 零钱兑换II(Day20:动态规划)

(背包容量固定,尝试内层的值,1,2和2,1都有)需要注意两层for循环内外层分别是什么,注意顺序。外层物品,内层背包:组合问题。外层背包,内层物品:排列问题。本题为完全背包的组合问题。

2025-01-23 11:59:48 269

原创 力扣 LeetCode 474. 一和零(Day20:动态规划)

dp[ i ][ j ]表示有 i 个0, j 个1时,最大子集的个数。01背包,外层物品,内层背包(此时内层考虑两个维度,m个0和n个1)

2025-01-23 11:34:37 137

原创 力扣 LeetCode 494. 目标和(Day19:动态规划)

拆分为left和right两部分集合(left表示正,right表示负)推导出 left =(sum + target)/ 2。只需要知道有没有数字可以填满left即可。

2025-01-22 18:40:37 135

原创 力扣 LeetCode 1049. 最后一块石头的重量II(Day19:动态规划)

01背包问题,尽可能找到近似装满target容量的石堆,最后两个石堆相减。石堆1:sum - dp[target],石堆2:dp[target](因为是sum/2向下取整,所以石堆1一定大于等于石堆2)

2025-01-22 17:10:25 165

原创 力扣 LeetCode 416. 分割等和子集(Day19:动态规划)

01背包问题,看能否找到刚好装满target容量的。

2025-01-22 16:55:58 159

原创 力扣 LeetCode 96. 不同的二叉搜索树(Day19:动态规划)

由前面的节点数量的左右子树的排列乘积起来叠加的。注意什么是二叉搜索树(中序遍历单调递增)

2025-01-22 14:29:25 130

原创 力扣 LeetCode 343. 整数拆分(Day19:动态规划)

i 拆分为 j *( i - j )拆成的数几乎相等时,结果最大。

2025-01-22 14:00:21 128

原创 力扣 LeetCode 63. 不同路径II(Day18:动态规划)

与不同路径的区别在于增加了障碍,需要对是否有障碍物进行条件判断。初始化赋值时也要判断是否有障碍物。

2025-01-21 12:02:22 108

原创 力扣 LeetCode 62. 不同路径(Day18:动态规划)

只能从上或从左侧来 dp[i][j] = dp[i - 1][j] + dp[i][j - 1];所以需要为第一行和第一列进行初始化赋值。

2025-01-21 11:49:52 309

空空如也

空空如也

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

TA关注的人

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