自定义博客皮肤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)
  • 收藏
  • 关注

原创 Day63 单调栈part02

LC42接雨水(未掌握)暴力解法:按列求雨水体积宽度一定是1高度,取决于,该列 左侧最高的柱子和右侧最高的柱子中最矮的那个柱子的高度。代码双指针优化法:每到一个柱子都向两边遍历一遍,这其实是有重复计算的。我们把每一个位置的左边最高高度记录在一个数组上(maxLeft),右边最高高度记录在一个数组上(maxRight),这样就避免了重复计算代码单调栈需要寻找一个元素,右边最大元素以及左边最大元素,来计算雨水面积单调栈从栈头到栈底的顺序是从小到大的一旦发现添加

2024-07-11 23:34:55 801

原创 Day62 单调栈part01

LC739每日温度(未掌握)暴力解法:两层for循环,时间复杂度O(n^2),会超时未掌握原因分析:只想到了从栈顶到栈底是递减的情况,忽略了从栈顶到栈底是递增的情况因为需要找到一个元素右边第一个更大元素,只有递增的时候,栈里要加入一个元素i的时候,才知道栈顶元素在数组中右面第一个比栈顶元素大的元素是i下标i和栈顶元素下标是我们已知的信息,我们需要的也是下标,只有充分利用我们已知的信息才能减轻负担代码LC496下一个更大元素I(未掌握)本质是跟LC739一样的,但是因为涉及两个数

2024-07-09 23:13:57 415

原创 Day60 动态规划part13

LC647回文子串(未掌握)暴力:两层for循环,遍历区间起始位置和终止位置,然后还需要一层遍历判断这个区间是不是回文。所以时间复杂度:O(n^3)dp数组含义常规dp数组:题目求什么,我们就如何定义dp数组。但是此题这样定义很难找到对应的递归关系根据回文性质来定义dp数组:判断一个子字符串(字符串的下表范围[i,j])是否回文,依赖于,子字符串(下表范围[i + 1, j - 1])) 是否是回文dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串递

2024-07-08 23:48:59 309

原创 Day59 动态规划part12

LC115不同的子序列(未掌握)递推公式与LC392类似,但是初始化略有不同LC392的dp数组含义为相同字符个数而本体的dp数组含义为出现的次数,因此dp[i][0]=1两种情况s[i-1]==t[j-1]dp[i][j] = dp[i-1][j-1]dp[i][j] = dp[i-1][j]s[i-1]!=t[j-1]=》dp[i][j] = dp[i-1][j]代码LC583两个字符串的删除操作其实本质就是求最长公共子序列,跟LC1143一样代码

2024-07-07 22:29:31 483

原创 优化后Day53 动态规划part11

1.dp数组的含义:dp[i][j]表示以下标i结尾的text1子序列和以下标j结尾的text2子序列的最长公共子序列2. 初始化:跟LC718一样,i结尾的需要初始化,i-1结尾不需要初始化3. 递推公式。

2024-07-07 18:15:11 229

原创 优化:Day52 动态规划part10

LC300最长递增子序列dp数组中dp[i]的含义是:以nums[i]结尾的子序列中最长递增子序列的长度为dp[i]最长连续递增子序列非连续最长递增子序列如果是连续的,只需要nums[i]>nums[i-1]就将dp值+1,但是如果是非连续的,nums[i]之前的所有子序列都可能跟nums[i]组成递增子序列,因此需要多加一层循环LC674最长连续递增子序列LC718最长重复子数组(未掌握)未掌握分析:想复杂了dp数组的含义:dp[i][j]表示nums1中以nums1[i

2024-06-17 23:44:47 268

原创 Day53 动态规划part12

LC309买卖股票的最佳时机含冷冻期与LC122类似,都是可无限次购买股票,只不过引入了冷冻期的概念dp[i][0] 第i天持有股票收益;dp[i][1] 第i天不持有股票收益;情况一:第i天是冷静期,不能以dp[i-1][1]购买股票,所以以dp[i - 2][1]买股票,没问题情况二:第i天不是冷静期,理论上应该以dp[i-1][1]购买股票,但是第i天不是冷静期说明,第i-1天没有卖出股票,则dp[i-1][1]=dp[i-2][1],所以可以用dp[i-2][1]买股票,没问题代码

2024-06-08 19:22:40 414

原创 Day51 动态规划part10+Day52 动态规划part11

k+1种,代表2。

2024-06-08 17:07:36 932

原创 Day50 动态规划part09

Day50 动态规划part09

2024-06-08 14:15:02 258

原创 Day49 动态规划part08

LC139单词拆分(未掌握)未掌握分析:将字符串s中的各个字符看成是背包,思考成了多重背包问题单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。拆分时可以重复使用字典中的单词,说明就是一个完全背包!只不过与一般的完全背包不同的是需要考虑物品的顺序问题,物品并不能随意摆放在背包中dp数组的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词确定递推公式:如果确定dp[j] 是true,且 [j, i] 这个区间的子

2024-06-07 23:02:59 351

原创 Day48 动态规划part07

爬楼梯进阶版(未掌握)没有搞清楚完全背包的排列和组合的区别题目问的是有多少组不同的方法爬上楼顶,{2,1}和{1,2}是不同的方法,因此属于排列问题,所以应该先背包后物品根据题意可知,将需要n阶爬上楼顶理解为背包容量最大为n,每次你可以爬至多m 个台阶理解为一共有m个物品,每个物品的重量是m,且每个物品没有使用次数限制。题目变成完全背包问题,即装满容量为n的背包一共有多少种方法代码:LC322零钱兑换本题求钱币最小个数,那么钱币有顺序和没有顺序都可以,都不影响钱币的最小个数。所以本题并不强

2024-06-06 23:15:34 307

原创 Day46 动态规划part06

完全背包问题完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。先遍历物品还是先遍历背包以及遍历顺序根据递推公式可知:每一个dp需要根据上方和左方的数据推出,只要保证数据左上方数据是递推出来的这种两个for循环的顺序就是可以的01背包:01背包二维dp数组:两个for遍历的先后循序是可以颠倒行是背包容量,列是物品,从小到大遍历物品和背包先物品再背包:一行一行进行遍历,左上元素是递推出来的(有一行是初始化)先背包再物品:一列一列进行遍历,左上元素是递推出来的01背包一维d

2024-06-02 14:06:12 289

原创 Day45 动态规划part05

LC1049最后一块石头重量II(未掌握)未掌握分析:其实本题跟LC416分割等和子集类似,本质上题目的要求是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,也就是01背包问题weight和value都是stones数组,题目可以看成是target=sum/2,即求背包容量是target所装石头的value是多少。target = sum / 2 因为是向下取整,所以sum - dp[target] 一定是大于等于dp[target]的。代码LC494目标和(未掌握)未能够将题意转

2024-06-01 22:15:02 487

原创 Day44 动态规划part04

o2n。

2024-06-01 21:02:09 1095

原创 动态规划part03 Day43

dp[i-j],j。

2024-05-29 22:51:11 882

原创 动态规划part02 Day42

LC62不同路径LC63不同路径II(超时10min)超时原因分析:思路想错了,即便是正确思路初始化也有点问题,应该将不必要的判断逻辑引入初始化的过程中初始化:从左上角到[i][0]和[0][j]都只有一条路径dp[i][0]=1和dp[0][j]=1引入故障,因此还需要obstacleGrid[i][0]==0和obstacleGrid[0][j]==0循环过程中,如果存在左边或者上边有故障,那么他们的dp值一定是0的,因为判断obstacles[i][j]==1直接continue

2024-05-28 18:00:00 287

原创 动态规划part01 Day41

动态规划算法解题步骤确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组LC509斐波那契数LC70爬楼梯LC746使用最小花费爬楼梯dp[]含义:爬到第i层楼梯的最小花费

2024-05-28 16:57:18 270

原创 Day39贪心算法part06

LC738单调递增的数字(未掌握)思路分析:一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]–,然后strNum[i]给为9字符串是不可变的,不可以使用s.charAt(i)='9’来改变字符串某个位置的值String[]数组转换为String不可以直接使用String.valueOf(),会将数组的地址转换成String其他类型转换为字符串可以使用+“”。 String[]数组转换为String使用String.join(

2024-05-25 23:27:29 294

原创 Day38 贪心算法part05

贪心算法part05

2024-05-24 22:07:53 488

原创 Day37 贪心算法part04

贪心算法part04

2024-05-23 22:22:30 520

原创 Day36 贪心算法Part03

Day36 贪心算法Part03

2024-05-22 22:37:06 550

原创 Day35 贪心算法part02

贪心算法part02。

2024-05-21 22:39:56 292

原创 Day34 贪心算法part01

贪心算法part01。

2024-05-20 20:30:10 376

原创 Day32 回溯算法part06

回溯算法part06。

2024-05-18 22:32:21 370

原创 Day31 回溯算法part05

回溯算法part05。

2024-05-17 22:27:23 371

原创 Day30 回溯算法part04

回溯算法part04。

2024-05-16 22:11:37 290

原创 Day29 回溯算法part03

回溯算法part03。

2024-05-15 20:59:35 281

原创 Day28 回溯算法part02

回溯算法part02。

2024-05-14 20:54:35 310

原创 Day27 回溯算法part01

回溯算法part01。

2024-05-13 20:31:48 292

原创 Day25 二叉树part09

二叉树part09。

2024-05-11 17:30:11 254

原创 Day24 二叉树part08

二叉树part08。

2024-05-10 16:07:16 337

原创 Day23 二叉树part07

二叉树part07。

2024-05-09 20:13:41 405

原创 Day22 二叉树part06

二叉树part06。

2024-05-08 22:30:31 459

原创 Day21 二叉树part05

二叉树part05。

2024-05-07 21:06:59 476 1

原创 Day20 二叉树part04

二叉树part04。

2024-05-06 22:10:05 456 1

原创 Day19 二叉树part03

二叉树part03。

2024-05-05 21:10:59 232

原创 Day18 二叉树 part02

第十八天 二叉树 part02

2024-05-04 23:45:50 273 1

原创 Day14 二叉树part01

二叉树part01。

2024-04-30 22:48:47 333 1

原创 Day13 栈和队列part03

第十三天 栈和队列part03

2024-04-29 22:13:52 147

原创 Day11 栈与队列part02

第十一天 栈与队列part02。

2024-04-27 14:48:34 321 1

空空如也

空空如也

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

TA关注的人

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