滑动窗口

滑动窗口

1.  概念解释

  是双指针的一种,有快慢两个指针,慢指针指向窗口的起始位置,快指针指向窗口的末端位置;

  不断的调节子序列的起始位置和终止位置,从而得出结果。

  可参考的详细解释   

 

2.  解题思路/模板

复制代码

int left;//左指针
int right;//右指针
int var;//随着窗口变化的量
for(int right =0; rightd的范围;right++){
  对var的操作;
  //修改var的值,且伴随着left的右移
  while(){
    ...
    left++;
  }
  return var;
}

复制代码
复制代码

//自己写的第一版
public static int solution1(int[] fruits){
  if(fruits==null){
    return -1;
  }
  if(fruits.length<=1){
    return fruits.length;
  }
  int left1=0;
  int left2=-1;
  int result= 1;
  int temp=1;
  for (int right = 1; right < fruits.length; right++) {
    temp = right -left1+1;
    if(left2==-1 && fruits[left1]!=fruits[right]){
      left2=right;
    }else{
      if(fruits[right]!=fruits[left1] && fruits[right]!=fruits[left2]){
        result = Math.max(temp-1,result);
        left1=left2;
        left2=-1;
        right=left1;
      }
    }
  }
  return result>temp?result:temp;
}

复制代码
posted @   amulet  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示