![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
滑动窗口
西柚与蓝莓
好了阿鹏
展开
-
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
给你一个由 正 整数组成的数组 。如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :返回数组中 完全子数组 的数目。子数组 是数组中的一个连续非空序列。示例 1:输入:nums = [1,3,1,2,2]输出:4解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。示例 2:输入:nums = [5,5,5,5]输出:10解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。使用滑动窗原创 2024-06-02 10:08:24 · 445 阅读 · 0 评论 -
2730. 找到最长的半重复子字符串(c++,滑动窗口)
所谓半重复子字符串是指字符串中某个子串,其中相邻的两个字符相同,但不要求全部字符都相同。算法采用遍历字符串的方式,通过维护两个指针(preLeft和left)来记录重复字符的位置,并动态更新最长半重复子字符串的长度。最长半重复子字符串是 "5223" ,子字符串从 i = 0 开始,在 j = 3 处结束。最长半重复子字符串是 "11" ,子字符串从 i = 0 开始,在 j = 1 处结束。中至多有一对相邻字符是相等的,那么称这个字符串。s 就是一个半重复字符串,所以答案为 4。原创 2024-05-25 17:08:53 · 193 阅读 · 0 评论 -
1695. 删除子数组的最大得分(C++,滑动窗口)
这段代码使用了滑动窗口(双指针)的方法来动态维护一个不包含重复元素的子数组,并实时更新子数组的和。主要思想是,用r指针扩展窗口并添加新元素,同时更新窗口的和;当窗口内出现重复元素时,移动l指针缩小窗口,直到窗口内所有元素都是唯一的。在此过程中,不断更新并比较最长子数组的和,最终返回最大的和作为结果。最优子数组是 [5,2,1] 或 [1,2,5]的一个连续子序列,即如果它等于。最优子数组是 [2,4,5,6],请你从中删除一个含有。原创 2024-05-25 16:54:46 · 209 阅读 · 0 评论 -
2461. 长度为 K 子数组中的最大和(c++)
因为 15 是满足全部条件的所有子数组中的最大子数组和,所以返回 15。返回满足题面要求的最大子数组和。- [2,9,9] 不满足全部条件,因为元素 9 出现重复。- [9,9,9] 不满足全部条件,因为元素 9 出现重复。- [4,4,4] 不满足全部条件,因为元素 4 出现重复。- [1,5,4] 满足全部条件,和为 10。- [5,4,2] 满足全部条件,和为 11。- [4,2,9] 满足全部条件,和为 15。因为不存在满足全部条件的子数组,所以返回 0。是数组中一段连续非空的元素序列。原创 2024-05-24 22:47:13 · 243 阅读 · 0 评论