- 博客(96)
- 收藏
- 关注
原创 二刷hot100-31.下一个排列
从右向左找到第一个升序对(nums[i] < nums[i+1]),然后从右向左找到第一个大于nums[i]的元素,记录为j,交换(i,j);反转(i+1,nums.length - 1)
2026-09-22 12:30:50
59
原创 二刷hot100-72.编辑距离
和上一道感觉一模一样,状态方程需要根据题意改变,增,删,改三种情况是如何;元素相等不需要操作是如何,核心还是状态转移方程,dp数组定义和上一道几乎一模一样。
2026-09-20 15:26:33
29
原创 二刷hot100-416.分割等和子集
背包问题,背包容量是num数组元素和的一半;物品重量和价值都是数组元素;当背包的容量等于价值等于target,代表能行。
2026-09-18 16:30:47
30
原创 二刷hot100.5.最长回文子串
分两种情况,若最长回文子串为奇数长度,遍历的每个字符为中心,两边移动左右边界记录最长;若为偶数,遍历的字符和下一个字符为中心两字符;两边移动左右边界记录最长;
2026-09-18 16:30:37
23
原创 二刷hot100-62.不同路径
核心:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];初始化第一行第一列都为1;记得不要混淆步数和路径数。
2026-09-18 16:30:29
209
原创 二刷hot100-64.最小路径和
状态转移方程:grid[i][j] = Math.min(grid[i][j-1],grid[i-1][j]) + grid[i][j];还是要先初始化第一行和第一列。
2026-09-18 16:30:15
11
原创 二刷hot100-73.矩阵置零
但在两次循环之前,要对第一行和第一列也进行标记,如果有0,则标记为true,在最后将第一行或者第一列都覆盖为0。二次循环内部元素,这次要反过来看,如果元素对应的第一行或者第一列为0,说明要置当前元素为0;循环内部元素,如果为0,则在对应的第一行和第一列进行标记;把第一行和第一列当作标记;
2026-09-17 14:29:30
170
原创 二刷hot100-763.划分字母区间
定义left代表分割后的每个字符串的起始位置,right代表该字符串的结束位置,不过right会在遍历过程中更新,直到取得最终值。先创建数组存储每个字母最后出现的位置;
2026-09-07 11:01:50
148
原创 二刷hot100-45.跳跃游戏Ⅱ
否则就判断是否到达之前一次覆盖距离的最大值,如果达到,更新覆盖距离,res+1;相比1,要求出到达最后一个元素的最小跳跃次数。如果能覆盖到最后一个,那么就res+1返回;还是看覆盖面,每一次都求出来最大覆盖距离;
2026-09-07 11:01:25
52
原创 二刷hot100-84.柱状图中最大的矩形
所以栈内始终需要有一个元素;定义一个新数组,相比之前的数组,在起始和结尾各加一个新元素0;且求取矩形面积需要用到三个元素:当前遍历元素、栈口弹出元素,当前栈口元素;还是单调栈,与之前不同的是,之前要求栈内元素递减,这道题要求递增。
2026-08-19 15:02:55
133
原创 二刷hot100-394.字符串解码
遇到字母,直接append,遇到数字,则记录下来;遇到左括号去递归,遇到右括号则退出循环;这里i++在判断之前执行,说明每次判断时i已经指向下一个元素了。定义了一个全局变量i,指向字符数组当前操作的位置;
2026-08-19 15:02:44
30
原创 二刷hot100-155.最小栈
巧妙,栈中存入数组,长度为2,第一个为元素本身,第二个为此时栈的最小值;在push时比较当前元素和当前最小值就能得到最新的最小值。
2026-08-19 15:02:33
27
原创 二刷hot100-739.每日温度
用了单调栈,栈内存的是温度数组的下标索引,栈内加元素直到遇到比栈口大的值,一直出栈直至栈口元素大于当前元素,入栈;
2026-08-19 15:02:21
32
原创 二刷hot100-34.在排序数组中查找元素的第一个和最后一个位置
很巧妙,两次二分查找,第一次找目标元素首先出现的位置,第二次找目标元素+1首先出现的位置,该位置减一就是目标元素最后一次出现的位置;
2026-08-17 15:41:58
32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅