滑动窗口算法的平移、扩张、收缩及其模板的使用

滑动窗口算法的平移、扩张、收缩及其模板的使用

近期因为一直在上课,好久没更新博客了。今天来更新一期最近练的滑动窗口:

滑动窗口顾名思义就是在两个指针间形成一个窗口,因为使用双指针解决问题,所以一般也叫双指针算法

什么情况适合用滑动窗口算法呢?一般滑动窗口是暴力算法的优化版,所以一般在求连续区间子串子数组时使用,能有效地将暴力算法的时间复杂度优化到O(n)

滑动窗口的平移、扩张、收缩

滑动窗口一般有3种操作:即平移扩张收缩

平移:指不改变滑动窗口大小,通过改变滑动窗口的左右边界,来实现滑动窗口的整体左移或右移。

扩张:指扩张滑动窗口的大小,一般通过增加滑动窗口的右边界来实现。

收缩:指收缩滑动窗口的大小,一般通过增加滑动窗口的左边界来实现。

滑动窗口的模板及使用

在这里插入图片描述

题目来源:leetcode(力扣)

题目链接:https://leetcode-cn.com/problems/get-equal-substrings-within-budget/

模板1

class Solution {
   
public:
    int equalSubstring(string s, string t, int maxCost) {
   
        int n = s.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值