- 博客(63)
- 收藏
- 关注
原创 leetcode 2920. 收集所有金币可获得的最大积分
考虑到coins[i]的范围是[0, 10000],最多除个十几次2就变成0了。所以用w[i][j]表述节点i在除以j次后,以i为根节点的子树的最大值,来进行dfs的记忆化。看数据范围是需要O(n*log(n))的算法。可以用dfs+记忆化搜索。
2025-01-23 21:05:30
324
原创 leetcode 407. 接雨水 II
模拟水流出去的过程。先把边缘的单元都加到堆里,从堆顶最小的单元开始bfs,遍历到的单元的四周,都会从该单元流出去,四周的单元的剩余水量+高度=max(自己的高度,遍历到单元的水量)
2025-01-18 17:11:44
315
原创 leetcode 115. 不同的子序列
动态规划问题,f[i][j]表示s的第i个元素匹配到t的第j个元素,有多少种结果。答案就是 f[s.length() - 1][t.length() - 1]
2025-01-15 22:17:09
228
原创 leetcode 127. 单词接龙
先建立一颗trie树,从beginWord开始bfs;bfs的过程中,对trie树进行dfs寻找“只差一个字母”的其他未遍历到的字符串;直到bfs遍历到endWord。
2025-01-10 21:43:59
286
原创 leetcode 458. 可怜的小猪
答案 ret 就是 bit ^ ret >= buckets 时,ret 的最小值。尝试次数 times = minutesToTest / minutesToDie。每只猪可以承载的数据量 bit = times + 1。特殊的,注意 buckets 为 1 的情况。
2025-01-08 21:43:45
243
原创 leetcode 2234. 花园的最大总美丽值
4. 因为我们是倒序枚举的,设“非完善花园”的最小数量是flowers[j],则j在美剧过程中一定不会增长,可以通过f[]和剩余的花的数量快速计算出是否可以满足。3. 从i=(minFull-1 to 0)枚举从第i个开始的花园都变成“完善花园”后剩余的花的数量,计算剩余的花可以使最小值最大的值。1. 先对flowers进行升序排序,计算现有“完善花园”的数量minFull;如果满足该条件后花朵数量还有剩余,可以计算可以给所有“非完善花园”各增加多少朵花。“非完善花园”的最小数量是flowers[j]
2025-01-06 22:33:14
455
原创 leetcode 1345. 跳跃游戏 IV
经典bfs,关键是建立所有“arr[i] == arr[j]”的连接。我的做法是用额外的存储,记录每个整数的前后整数都是哪个,再对数组排序。
2025-01-01 17:29:21
292
原创 leetcode 354. 俄罗斯套娃信封问题
先对所有信封排个序,w从小到大,如果w相同则h从大到小。可以证明从左往右遍历数组,如果h[j] > h[i] && i < j,则 i 可以放进 j 里。排序和求最大递增子序列长度的复杂度都是O(n*log(n))。现在问题就变成了求这个数组的最大递增子序列的长度。
2024-12-27 21:36:47
254
原创 leetcode 218. 天际线问题
把一个矩形拆成左右两个点,左边向队列中增加一个高度,右边移除一个高度,求每个点上的最大高度,然后去重即可。从数据规模看,O(n^2)的算法就够了,注意边界条件。
2024-12-26 23:20:27
229
原创 leetcode 174. 地下城游戏
我想到一个有意思又易懂的解法:灌水。水从左上角落下,往右下角流,遇到负数减少,遇到正数增加,看最后能不能流到终点。先计算随便一条路径上的最小值,再二分尝试,最差复杂度是 O(log(200*200*1000)*mn),足够了。一眼dp/dfs,看题解也大多是这类解法。
2024-12-20 21:04:36
144
原创 leetcode 85. 最大矩形
用f[i][j]表示第i行第j列的元素,从它开始到最右侧,连续为“1”的长度。O(n^2)的算法可求出。例如当前位置是[i,j],矩形高度是k(取值范围是1到高度-i),则最大面积是。
2024-12-18 22:46:38
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人