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中的子集时,就是得到一个答案了。

  • 相关阅读:
    Linux find 用法示例
    [转载]进程的概念与结构
    linux vi命令详解
    vi快捷键必知必会
    vim分屏操作
    硬连接和软连接的区别
    javascript_console调试常用方法
    javascript_错误处理机制
    Array详解
    react--setState使用
  • 原文地址:https://www.cnblogs.com/noob-l/p/13606258.html
Copyright © 2011-2022 走看看