你奈我何
文章平均质量分 71
代码
浮过夏水之头而西行兮
这个作者很懒,什么都没留下…
展开
-
[312. 戳气球] 动态规划寻找转移函数
这个哥们写的思路真的很牛逼,转载一下他。 戳气球题解原创 2024-06-09 21:09:15 · 234 阅读 · 0 评论 -
[LCP 51. 烹饪料理] 子集型回溯
子集型回溯有两种解法输入视角通过判断集合中的每一个元素 k,认为元素 k 被选入子集或不被选入子集,从而得到答案。其 dfs 形状是一个高度为 n 的二叉树。答案视角每次判断在集合中选择哪一个元素答案视角答案视角答案视角原创 2024-03-20 21:55:15 · 349 阅读 · 0 评论 -
[31. 下一个排列] 从错误中思考
失败总是贯穿人生始终,这就是人生原创 2024-03-14 17:37:10 · 846 阅读 · 0 评论 -
[210. 课程表 II] 拓扑排序模板(DFS+BFS)
本题是经典拓扑排序模板,通过DFS和BFS两种方式进行实现。DFSBFS代码中同时有DFS和BFS两种实现原创 2024-03-08 00:22:39 · 402 阅读 · 0 评论 -
[124. 二叉树中的最大路径和] dfs数据操作和传递
在实际题目中,我们可能遇到需要多步不同操作,操作之间有复杂的依赖关系。这时就需要我们按照以上分类,理清每个操作可能的位置,将其中冲突的拆解到不同的dfs中,不冲突的合并在一个dfs中。从而正确的实现。原创 2024-02-27 19:53:40 · 1031 阅读 · 0 评论 -
[986. 区间列表的交集] 做什么和如何做
关键的点在于移动与判断相交的分离,如果在题解的某一处将移动与判断相交混杂(例如2处做法),那么题解应当会十分复杂。因此针对当前思路不可覆盖的用例,需要多进行模拟,清晰的描述用例的独特之处,将问题的难点一一说明。这一点在算法题目以至于实际的做事中更重要,与应试不同,解决问题时情况往往复杂(纷乱繁杂的情景)又简单(描述模糊的目的)。知道做什么和如何做同等重要,而前一点是大部分人缺乏训练的。将难点写明,问题便解决了一半。之后再结合题目性质考虑。想清楚比盲目补丁更有效。原创 2024-02-20 18:38:17 · 341 阅读 · 0 评论 -
[239. 滑动窗口最大值] 优先队列和单调队列
本题使用优先队列和单调队列两种方式,优化对于滑动窗口取最大值的时间复杂度。这对于一些动态规划的题目优化是有帮助的,因为动态规划常常需要对 dp 数组进行顺序遍历,根据前面的某区间内的值计算当前值,这和本体的情景十分类似。例如 1696. 跳跃游戏 VI对于一个区间,要动态存取最大值那么最直观的方法就是使用优先队列(大根堆),只需要将每一步划过的值存入优先队列中,即可自动排序出最大值,唯一需要考虑的就是使用的时候判断当前最大值是否在当前目标区间。优先队列的实现方式是堆,因此存入每个值时间复杂度都是 O(n)原创 2024-02-05 20:11:50 · 353 阅读 · 0 评论 -
[136. 只出现一次的数字 && 268. 丢失的数字] 异或的使用与二进制位运算
时间复杂度:空间复杂度:136. 只出现一次的数字268. 丢失的数字原创 2024-01-30 18:20:38 · 379 阅读 · 0 评论 -
[560. 和为 K 的子数组 && 53. 最大子数组和] 前缀和问题
Problem: 560. 和为 K 的子数组Problem: 53. 最大子数组和文章目录思路解题方法Code思路对于一个序列求解问题,我们可以先从两个维度思考:要不要排序,是否求解连续子序列。这两道题都是求连续子序列问题。对于这一类拥有连续性质问题,滑动窗口、前缀和等方法往往可以进行时间上的优化。解题方法前缀和则可以将最内层遍历转换为简单的做差,这样做的好处不仅在于可以降低 n 的时间复杂度,还在于可以列出子序列和的计算公式,如此可以通过数学的方式进行三个值的相互求解。原创 2024-01-27 14:44:10 · 361 阅读 · 0 评论 -
[283. 移动零] 二分类问题
Problem: 283. 移动零文章目录本题思路题目性质Code本题思路将所有的0移动到尾部,直接的想法就是遇到一个零就把0移动到数组尾部,再将数组长度减一,这个想法很显而易见。但是我们可以观察到,其实所有移动到尾部的0是有顺序的,他们是按照原数组中的逆序排列,如下arr_init = [1, 2, 0(1), 3, 0(2), 4]arr_sorted = [1, 2, 4, 3, 0(2), 0(1)]这个性质是可以被利用的,即 被移动的元素可以保持有序。例如,本题目的要求,剩余数原创 2024-01-17 10:51:07 · 384 阅读 · 0 评论 -
并查集模板
【代码】并查集模板。原创 2024-01-16 21:41:09 · 351 阅读 · 0 评论 -
快速排序模板
最后将i+1和pivot交换,i+1也有两种情况,即i+1指向pivot和小于pivot,不论是哪种情况都可以交换,并且满足pivot将数组按照大小分布在左右两边的要求。i指针的意义是其指向的值一定是小于等于pivot的,因而初始化成为-1表示现在没有一定小于等于pivot的值。partation通过两个指针i,j操作这段无序数列,选择将pivot的值设置为最后一个元素。指针j则从0开始遍历,此事会遇到两种情况。原创 2023-07-19 20:12:09 · 216 阅读 · 0 评论 -
tarjan算法伪代码说明
【代码】targn算法伪代码说明。原创 2023-05-17 20:13:21 · 128 阅读 · 0 评论 -
侵略性奶牛(二分算法的总结)
农夫 John 建造了一座很长的畜栏原创 2023-03-24 12:01:11 · 142 阅读 · 0 评论 -
To Fill or Not to Fill(贪心算法)
有了高速公路,开车从杭州到任何其他城市都很容易。但由于汽车的油箱容量有限,我们必须不时地在路上找到加油站。原创 2023-03-28 01:34:53 · 273 阅读 · 0 评论 -
[115. 不同的子序列] 动态规划的可用性
动态规划的思考过程原创 2023-03-03 15:22:06 · 86 阅读 · 0 评论