刷题笔记:滑动窗口


滑动窗口本质上是一个双指针。

如求解和大于目标值的最短子序列一题。

首先设置左指针 left 和右指针 right 都从零开始,随后 right 开始移动并累加和,当和大于目标值时停止。

随后左指针开始移动,并不断更新最短子序列长度,并从累计和中减去 left 位置的值。

由此遍历完整个数组。

while(right<len){
            sum+=nums[right];//sum为累加和
            while(sum>=target){//target为目标值
                if(right-left+1//minlen为最小值
                    minlen=right-left+1;
                }
                sum-=nums[left++];
            }
            right++;//当左指针移动完才能再次开始移动右指针
        }

相关