首页 > 其他分享 >滑动窗口总结

滑动窗口总结

时间:2024-06-17 11:30:03浏览次数:25  
标签:总结 窗口 int 循环 result 数组 滑动 最长

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int i=0;
        int sum=0;
        int result=INT32_MAX;
        for(int j=0;j<nums.size();j++){
            sum+=nums[j];
            while(sum>=target){
                result=min(result,j-i+1);
                sum-=nums[i++];
            }
        }
        return result==INT32_MAX?0:result;
    }
};
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int left=0;
        int result=0;
        unordered_set<char>window;
        for(int right=0;right<s.length();right++){
            char c=s[right];
            while(window.count(c)){
                window.erase(s[left++]);
            }
            window.insert(c);
            result=max(result,right-left+1);
        }
        return result;
    }
};

我们可以对比一下这两道滑动窗口的题目,第一道是力扣209题,求长度最小的子数组,第二道是力扣3题,无重复字符的最长子串。都是滑动窗口中求不定长的最长、最短型。(还有别的类型,主要是还没刷到,下次二刷的时候刷灵神的题单时补充)

主要的思路如下:

        1.设置两个指针,一个指向初始元素,一个指向终止元素(这个一般在for循环中设置)。一般可以再多设置一个变量,用来记录最后最长、最短的长度。

        2.利用for循环遍历整个数组,字符串可以当做数组遍历。

        3.利用while循环,不断更改result的值,result通常需要和终止位置与起始位置之间的距离做比较。

注意事项:

        1.有时候可能会需要用到哈希表之类的,思路不一定完全一致

        2.一定要用while循环去判断符合条件的最长、最短数组长度,不能用if。

        3.result的初始值设置也是一个坑点,需要考虑临界的情况(即可能数组中没有的时候应该返回的值)

标签:总结,窗口,int,循环,result,数组,滑动,最长
From: https://blog.csdn.net/2301_80161204/article/details/139738835

相关文章

  • 团队里程碑阶段一总结
    团队里程碑阶段一总结在第一阶段的开发工作中,我们深入讨论并总结了各项工作进展及成果。经过团队成员的共同努力,我们已经顺利完成了第一阶段的预期任务。以下是阶段性成果总结:功能整合与框架搭建:成功地整合了已经实现的各项功能,确保它们能够协同工作。初步搭建了软件框架,......
  • 代码随想录第11天 | ●字符串总结 ●双指针回顾
    字符串总结字符串是若干字符组成的有限序列,也叫字符数组。C语言中,把字符存入数组,以结束符'\0'为结束标志,'\0'可作为判断依据c++中,提供string类,string类提供各种接口,其中size()可作为结束判断标志。vector<char>和string相差不大,string类提供处理字符串的接口更多字符串类......
  • JS数组常用方法总结,含ES6新方法,附示例代码
    ......
  • Flink面试必问题:时间和窗口处理面试题及参考答案(3万字长文)
    目录Flink中的事件时间(EventTime)和处理时间(ProcessingTime)有什么区别?Flink的容错机制是如何实现的?Flink中的窗口(Window)是什么?Flink支持哪些类型的窗口?如何定义一个滚动窗口(TumblingWindow)?如何定义一个滑动窗口(SlidingWindow)?如何定义一个会话窗口(SessionWindow)?Flin......
  • 数据库恢复技术知识点合集(复习总结)
    目录一、事务的基本概念二、事务的ACID特性1.原子性2.一致性3.隔离性4.持续性三、数据库恢复概述四、故障的种类1.事务内部的故障2.系统故障——软故障1.系统故障的原因2.系统故障的恢复3.介质故障——硬故障1.介质故障的原因2.介质故障的恢复五、......
  • JAVA 程序 在 cmd 窗口的运行
    1、在指定路径创建文件:eg文件名称:Hello.java;2、在文件内部输入内容:publicclassHello{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}3、在cmd运行命令javac+文件名称Hello.java4、生成Hello.class......
  • 使用Kimi+Markmap总结文件内容生成思维导图原创
    一份文件内容太长,完整阅读下来太费时间,但如果使用AI进行内容提炼,再总结成思维导图,方便快速看到这份文件的核心内容和主题结构,就会极大地节约时间,目前就可以使用Kimi+Markmap这两个工具,帮我们把ppt、word、pdf等文件内容快速总结成思维导图。一、工具准备Kimi,将文章或一篇网页投......
  • 径向滑动轴承动压润滑计算
    根据黄平老师的《润滑数值计算方法》第四章内容,推导径向滑动轴承动压润滑计算方法,并用Matlab将程序复现,最后和书中的计算结果及其论文进行对比。对于等温过程,径向滑动轴承动压润滑的油膜压力分布计算公式为:(1)公式中:R为轴颈半径,单位为m;p为油膜压力,单位为Pa;h为油膜厚度,单位为m;U......
  • Unity学习笔记----摄像机组件信息相关知识点总结
    一.ClearFlags1.skybox天空盒一般用于3d游戏。2.SolidColor颜色填充一般用于2d游戏。3.Depthonly只画该层,背景透明与Depth配合使用,等会再写。4.Don'tClear不移除,渲染覆盖不会擦除上一帧的画面,一般不使用。默认二.CullingMask选择性渲染部分层级,可以指定渲染对......
  • #C语言结构体/结构体指针/单链表学习必备总结(浓缩版)#
    一.结构体的定义结构体是一种用户自定义的数据类型,用于将多个不同类型的数据组合在一起形成一个新的数据类型。结构体由多个成员变量组成,每个成员变量可以是不同的数据类型,可以是基本数据类型(如整型、浮点型、字符型等)或其他结构体类型。结构体的成员变量在内存中是按照声明的......