zoukankan      html  css  js  c++  java
  • 滑动窗口

    滑动窗口是双指针的一种应用,形象点说就是维护一个窗口,在窗口滑动的过程中进行窗口内数据的更新,并判断是否符合答案。、
    初始时两个指针均指向开头,然后右指针依次向右滑动,在滑动的过程中需要收缩的时候进行左指针的移动,当右指针移出的时候结束循环即可。
    之前在学习的时候看到别人总结了一个滑动窗口算法的框架,具体如下:

    void fun(string s, string t){
         map<char,int> need,window;
         //在need中记录相应的信息
          .....
          int left=0,right=0;
          int valid;//该变量用来判断是否得到相应的答案了
          
          while(right<s.size()){
             char c=s[right];//取出将要移入窗口内的数据
             right++;
             //下面进行窗口更新后一些数据的更新
             .....
    
             while(判断窗口是否需要收缩){
                  //是否需要进行相应的答案更新
                  ......
    
                  char d=s[left];//将要移出窗口的数据;
                  left++;//收缩窗口
    
                  //窗口收缩后相应数据的更新
                  .......           
             }   
          }      
    }
    

    其中need负责记录的是答案包含的数据信息,window记录的是窗口内数据的信息,当need中的信息是window中的子集时,就是得到一个答案了。

  • 相关阅读:
    PDF格式简单分析
    python 2.x 版本 pip 的使用
    网络读书笔记-运输层
    网络读书笔记-应用层
    线程池源码解析
    管道流创建订单
    @autowire、@resource原理
    Spring如何解决循环依赖
    结合Spring特性实现策略模式
    自定义注解+AOP实现redis分布式锁
  • 原文地址:https://www.cnblogs.com/noob-l/p/13606258.html
Copyright © 2011-2022 走看看