滑动窗口
文章平均质量分 92
滑动窗口算法题
zhangcoder
KEEP CODING! 文章的配套资料 http://zhangcoder.ysepan.com/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
L51.【LeetCode题解】438. 找到字符串中所有字母异位词(四种方法)
1.题目2.分析暴力解法方法1:排序(超时)方法2:哈希表(险过) ★判断两个哈希表是否相同算法(通用方法,必须掌握)能相等的前提:两个哈希表的大小相等哈希表有迭代器,可以使用范围for从头到尾遍历提交结果优化方法:定长滑动窗口提交结果使用哈希数组更快提交结果★★★更优化的方法:不定长滑动窗口(比定长的要快!)提交结果原创 2025-05-11 15:41:31 · 1357 阅读 · 0 评论 -
L48.【LeetCode题解】904. 水果成篮
你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组fruits表示,其中fruits[i]是第i棵树上的水果。你想要尽可能多地收集水果。给你一个整数数组fruits,返回你可以收集的水果的数目。fruits = [3可以采摘全部 3 棵树。3可以采摘 [1,2,2] 这三棵树。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。4可以采摘 [2,3,2,2] 这四棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。,3,3,4]5。原创 2025-05-09 19:28:23 · 1359 阅读 · 0 评论 -
L47.【LeetCode题解】1658. 将 x 减到 0 的最小操作数
循环变量为right,每循环一次就sum+=nums[right],如果sum>target,那么left右移,直到sum<=target停止右移,如果满足sum==target,执行len=max(len,right-left+1)即可,right到nums.size()-1时停止循环。3+2+1+1+3==10,移除红色区域的元素即可,红色区域一共5个数,绿色区域的元素被保留。最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0。",红色区域的元素个数要最小,则。原创 2025-05-08 08:42:37 · 851 阅读 · 0 评论 -
L46.【LeetCode题解】1004. 最大连续1的个数 III
zero>k,需要出窗口,即left++,(left++之前,如果nums[left]为1,不变动zero;1.初始化窗口的两个端点:left=0,right=0,zero=0(zero为存储滑动窗口中0的个数)m时,讨论m个0翻转1个、翻转2个、...、翻转k个的情况,针对每个情况求连续1的最大个数。m时,讨论m个0翻转1个、翻转2个、...、翻转m个的情况,针对每个情况求连续1的最大个数。以[1,1,1,0,0,0,1,1,1,1,1],k==2为例。转化思路:设区间[left,right],原创 2025-05-04 15:19:25 · 1119 阅读 · 0 评论 -
L45.【LeetCode题解】LCR 016. 无重复字符的最长子串
思想类似,都可以使用left和right来维护滑动窗口,如果right指向的字符与字符串的字符不重复,right++,如果right指向的字符与子字符串的字符重复,left++,枚举所有子串,之后判断每个子串是否无重复字符,固定左边界left,right从left+1。,查找以left为起点的无重复字符的子串,一旦发现right指向重复的字符,left++有可能重复的元素在窗口的中间的某个位置,此时需要。1.left++: 尝试去除重复的元素,,直到窗口中没有重复的元素才能更新结果,,所以其长度为 1。原创 2025-05-02 14:31:23 · 575 阅读 · 0 评论 -
CC50.【C++ Cont】滑动窗口
right从左边界向后枚举,right每指向一个新数,就为sum加上这个新数(思想类似前缀和,比方法1每次循环重新计算一遍sum要快)此时sum>target,记录len的值:right-left+1==4,但这个len不一定是最小值,因此要继续"滑动"窗口。left++,为"出窗口"(移除旧数据)sum减去对应的值,注意right不用回退,要利用。给定闭区间[left,right],left为区间左边界,right为区间的右边界。如果sum<target,right++,为"进窗口"(原创 2025-04-29 20:13:50 · 1171 阅读 · 0 评论
分享