1014. 最佳观光组合
2207. 字符串中最多数目的子序列
2516. 每种字符至少取 K 个
反向滑动窗口:移动窗口满足外部需求。
3171. 找到按位或最接近 K 的子数组
滑动窗口使得窗口内的值与K最近:移动右窗口直至大于k之后移动左窗口小于k。
3258. 统计满足 K 约束的子字符串数量 I
题目要求小于,滑动窗口条件设为等于,然后计算right-left+1。(每扩张一个r相当于增加了r - l + 1个以r为终点符合条件的子区间,ans累加数量即可。)
638. 大礼包
1547. 切棍子的最小成本
526. 优美的排列
即使之前被选择的数是有序的,在记忆化搜索时可以将他们考虑成无序的。
tips:一般看见题目说求[l,r]中的xxx数量可以转换为[0,r]-[0,l]中的数量时考虑。
303. 区域和检索 - 数组不可变
1871. 跳跃游戏 VII
前缀和不一定针对数字,也可以应用在是否可达。
设reachable[i] = 1为可达, prefixSum[i]为可达前缀和。
则reachable[i+1]是否为1由prefixSum[i]定。
最后prefixSum[i+1] = prefixSum[i] + 则reachable[i]。
使用c++ stl中的std::priority_queue
3264. K 次乘运算后的最终数组 I
307. 区域和检索 - 数组可修改
732. 我的日程安排表 III
子集相关:无重复就是选与不选 dfs(i)->dfs(i+1),重复就是不选时相同的元素都不选。