算法整理-3滑动窗口

腾讯--后台开发实习生一面的算法真题整理(2025年3月4日) 腾讯--后台开发实习生一面的算法真题整理(来源于网络资料) 阅读详情
  • 什么是滑动窗口

    在数组上维护一个 [ , ) 左闭右开可滑动的东西
    滑动数组

  • 滑动窗口的构建

    static String minWindow(String s,String t){
        char[] ss = s.toCharArray();
        HashMap<Character,Integer> need = new HashMap<>();
        HashMap<Character,Integer> window = new HashMap<>();
        int left = 0, right = 0;
        int valid = 0;
        // 记录最⼩覆盖⼦串的起始索引及⻓度
        int start = 0, len = Integer.MAX_VALUE;
        //need哈希表代表需要的字母和对应的个数
        for (char c: t.toCharArray()){
            need.put(c,need.getOrDefault(c,0)+1);
        }
        while (right < ss.length){
        	// c 是将移⼊窗⼝的字符
            char c = ss[right];
            // 右移窗口
            right++;
            //一系列更新操作
            if (need.containsKey(c)){
                window.put(c,window.getOrDefault(c,0)+1);
                if (need.get(c) == window.get(c))
                    valid ++ ;
            }
            //判断何时左边进行收缩
            while (valid == need.size()){
           		// 在这⾥更新最⼩覆盖⼦串
                if (right - left < len){
                    start = left;
                    len = right - left;
                }
                char d = ss[left];
                left ++;
                //一系列更新操作
                if (need.containsKey(d)){
                    if (window.get(d) == need.get(d))
                        valid--;
                    window.put(d,window.get(d)-1);
                }
            }
        }
        return len==Integer.MAX_VALUE? "":s.substring(start,start+len);
    }
  • 滑动窗口的应用
    Leetcode
    1. 最⼩覆盖⼦串(困难)
    2. 字符串的排列(中等)
    3. 找到字符串中所有字⺟异位词(中等)
    4. ⽆重复字符的最⻓⼦串(中等)
算法专题整理:滑动窗口 因此result会在每一个right遍历的时候进行累加,得到**[left,right]窗口内所有大小的数组个数**。本题特定条件并不复杂,是求和的条件,并不需要单独写函数。只要满足特定条件,就可以进行滑动。特定条件是,对于子数组中的任意两个元素,他们的绝对值差不能超过 2。例如[1,2,3],所有以right=3为右端点的子数组,就是。,如果左端点的移动条件不明或者比较复杂,就不适合用滑动窗口。本题是很经典的滑动窗口题目,选取特定条件下的连续子数组。的数组个数,加上是遍历right,因此我们的策略是。 阅读详情

相关推荐

LeetCode常用算法模式&大厂面试题整理

文章参考自 educative 参考文献链接 1、滑动窗口     1 一个左指针,一个右指针。其中左指针用于缩小范围,右指针用于扩大搜索范围。一般求滑动窗口的最小值都是在缩小左指针的时候取得的。     2 右指针扩展的条件时:只要当前还没有满足条件,就暴力增长,直到第一次满足条件为止。     3 左指针收缩的条件:只要当前指针的缩小还没影响窗口的可满足性,就一直暴力向左增长。一但当前指针向前移动的时候影响了窗口的可满足性,就记录下当前的窗口大小,并更新目前为止满足条件的最小窗口记录。之后,再次扩展右指

qq_45770532的博客 2359

滑动窗口.数组

系列文章目录 示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 滑动窗口是森马 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学.

m0_60109224的博客 231

STM32驱动数码管:从硬件连接到动态显示实现

本文详细介绍了使用STM32单片机驱动数码管的完整流程,从硬件连接到软件实现。内容涵盖共阳/共阴数码管原理、GPIO配置、段码表生成,并重点解析了多位数码管动态显示的核心技术,包括动态扫描原理、消影处理及实战代码,帮助开发者快速掌握这一嵌入式开发基础技能。

p5l2m9n4o6q的博客 574

《跟我学算法系列文章》21天轻松通关——数据结构与算法-day01

《跟我学算法系列文章》21天轻松通关——数据结构与算法-day01 ——01.动态规划+滑动窗口 介绍 动态规划+滑动窗口: 元素和为目标值的子矩阵数量 难度:困难/动态规划、滑动窗口 ——02.滑动窗口题目 1. 滑动窗口的最大值(Leetcode 剑指 Offer 59 - I /简单) 2. 长度最小的子数组(Leetcode 209/中等) 3. 最小覆盖子串(Leetcode 76/困难)lagou、labuladong(1.7.1) 4. 滑动窗口最大值 (Leetcode 239/困难) 5.

个人总结 697

基于ROS的室内移动机器人自主导航技术

随着机器人技术的发展,近些年来室内移动机器人的研究热度越来越高。本文主要利用ROS操作系统对室内移动机器人的建图定位与自主导航关键技术进行研究。 ROS是目前开发较为完整具有广阔应用前景的开源机器人操作系统,具有分布式、模块化、代码复用等优良特点。同时ROS还提供了许多开源库,在这些库的基础之上研究同时定位与地图构建和机器人自主导航技术可以节省大量时间。 ORB-SLAM2是比较优秀的视觉SLAM算法之一,它具有计算量比较小、能够实时运行等优点。在介绍ORB-SLAM2的框架之前,首先会介绍视觉SLAM的一

weixin_44553616的博客 1909

简话 RAG 本地部署(DeepSeek + RAGFlow)

RAG = DeepSeek + OLlama + Docker + RAGFlow + Windows 11 简话 RAG 本地部署

捉虫客 de 博客 1万+

力扣(python3自用)

问了ai之后,明白自己应该先梳理思路,在说一些细节问题。先把思路理清,把框架搭建起来。最好可以先写注释,30min之后,这道题不管什么地步,都要暂停去看答案。

m0_68478087的博客 371

【论文精读】DisCo: Graph-Based Disentangled Contrastive Learning for Cold-Start Cross-Domain Recommendat

源域中具有相似偏好的用户在目标域中可能会表现出不同的兴趣。因此,直接迁移嵌入可能会引入不相关的源域协同信息。提出了一个基于图的解耦对比学习框架,以捕捉细粒度的用户意图并过滤掉不相关的协同信息,从而避免负迁移。 具体而言,对于每个域,我们使用多通道图编码器来捕捉多样化的用户意图。然后,我们在嵌入空间中构建亲和图,并执行多步随机游走以捕捉高阶用户相似性关系。将一个域视为目标域,我们提出了一种以用户相似性为指导的解耦意图对比学习方法,以优化跨域的用户意图桥接。

qq_52342142的博客 1227

【滑动窗口】算法总结/力扣题目整理

力扣链接给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。

Mr_StrangerN的博客 1956

别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)

本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。

weixin_29248611的博客 499

图相似度模型(论文篇)

图相似度模型

weixin_43702653的博客 5747

详解顺序结构滑动窗口处理算法

在数据结构和算法方面的面试中,数组和字符串的相关问题往往是一个重要的考察点。面试官通常会测试面试者在处理这些基础数据结构时的熟练程度,因为这直接关系到解决实际问题的能力。在数组和字符串的考察中,双指针和滑动窗口以及排序算法、字符串的处理API成为关键技巧,本文主要对滑动窗口进行简单介绍。

张小殊的博客 2436

从零到一:QT for OpenHarmony 开发环境实战搭建与踩坑指南

本文是一份详尽的QT for OpenHarmony开发环境搭建实战指南。文章手把手教你如何在Windows和macOS系统上,从环境准备、核心工具(DevEco Studio与社区版QT SDK)安装配置,到创建首个QT Quick项目、解决构建部署中的常见问题,最终实现应用在OpenHarmony设备上运行。内容涵盖关键配置修改、资源管理及深度踩坑经验,旨在帮助开发者高效开启跨平台开发之旅。

weixin_29190573的博客 325

算法:滑动窗口

滑动窗口算法一些题目的总结

yanxiao07的博客 826

ZYNQ PS-PL数据交互方式总结

一,中断 二,IO方式:MIO EMIO GPIO 三,BRAM或FIFO或EMIF (1)通过BRAM实现PL/PS之间交互 PS 的配置如下图所示。使能 M_AXI_GP0 口,将 FCLK_CLK0 设为 100MHz,使能 PL 至 PS 的中断。 AXI BRAM Controller IP 核连接 PS 的 M_AXI_GP0 口和 BRAM,完成 AXI 接口至 BRAM 接口的转换。 添加BRAM,将BRAM设置为双口RAM,将PORTA与AXI B...

wangjie36的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

算法技巧 整理:滑动窗口

1、滑动窗口算法: 本算法通过维护一个动态变化的窗口,能够在 O(n) 时间复杂度内找到最长的符合条件的区间。

zxf347085420的博客 356

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

滑动窗口算法专题整理

滑动窗口(Sliding Window)是一类用于处理的经典优化技巧,能够将原本基于双重循环的 (O(n^2)) 时间复杂度优化至 (O(n))。

weixin_58963169的博客 766

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

滑动窗口的习题整理(自用)

双指针:使用left和right两个指针维护窗口窗口滑动:根据条件动态调整窗口大小状态维护:在滑动过程中维护相关状态(和、长度、瑕疵度等)

jiajiachonga的博客 1150

【优选算法篇】:滑动窗口算法--开启高效解题的“窗口”,透过例题看奥秘

,避免不必要的重复过程,从而提高算法的效率。它通过维护一个滑动窗口(窗口大小可变),也就是两个通向移动的指针再数组或者字符串上移动,比根据问题的要求进行相应的操作。:确定窗口的起始位置和结束位置,通常是数组或者字符串的开头或者任意位置。根据问题要求,确定窗口的大小和滑动规则。:在每一步,计算或者更新窗口内的数据,并根据需要更新结果,比如窗口内的大小,最大值,最小值等变量。滑动窗口的核心思想是利用窗口的移动来优化问题的求解过程(:当窗口的结束位置达到数组或者字符串的末尾时,算法结束。

2301_82347435的博客 2256

算法整理:滑动窗口

登录后复制 for(int i=0,j=0;i<n;i++){ i下标加入滑动窗口 while(j<=i&&check(i,j)) j++; j下标移除滑动窗口 更新答案 }1.2.3.4.5.6.7.每次for循环,i++,表示i指针向后移动一位,while是...

weixin_37078370的博客 115

算法问题——滑动窗口问题集合

239. 滑动窗口最大值 /** * Copyright (C), 2018-2020 * FileName: 滑动窗口最大值239 * Author: xjl * Date: 2020/9/2 20:07 * Description: */ package 滑动窗口问题集合; import org.junit.Test; import java.util.ArrayList; import java.util.Collections; import java.util.De

庄小焱 937

滑动窗口算法

什么时候使用滑动窗口?在有范围的一段数字或者字符中找到连续的最大或者最小的一段数字或者字符那我们我们在写滑动窗口算法的时候需要想到那几个方面的问题?1.记录滑动窗口所需要的集合或者数组?(根据题意来)2.什么条件下需要缩容呢?3.返回结果需要哪些数据的记录?(根据题意来)

Al_tair的博客 442

【数据结构与算法】关于滑动窗口

写在前面: 这里主要是说数组or字符串问题里边经常会用到的“滑动窗口”,不是网络里边那个(那个其实我也有总结过,不过没整理成博客,等看到那块的时候来写)。 什么是滑动窗口? 画个图先直观的形成一个印象: 有了印象之后,滑动窗口经常用来解决子串的问题,从图上也能看出来,就是设置一个区间,然后在这个字符串or数组上滑动。 有了是什么之后,那我们就看看为什么。 为什么要用滑动窗口 假...

Max的专栏 614

【优选算法】Sliding-Chakra:滑动窗口的算法流(下)

本篇接上一篇滑动窗口算法,这一篇有些许难度,为了提升自我,请耐心看完后,多敲代码整理思路,相信能够有莫大的收获😼

Zero_VPN的博客 4493

7、滑动窗口套路算法框架——Go语言版

前情提示:Go语言学习者。本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在: https://github.com/honlu/GoLabuladongAlgorithm https://gitee.com/dreamzll/GoLabuladongAlgorithm 方便的话,请分享,star!备注转载地址!欢迎一起学习和交流! 涉及题目 Leetcode 76. 最小覆盖子串

学习博客,一路同行 605

2021秋招-算法-滑动窗口算法框架

算法-滑动窗口算法框架 大佬整理1/3-我写了套框架,把滑动窗口算法变成了默写题 大佬整理2/3-滑动窗口算法解决子串问题 大佬整理2/3-单调队列解决滑动窗口问题 框架整理: 关于双指针的快慢指针和左右指针的用法,可以参见前文 双指针技巧汇总,本文就解决一类最难掌握的双指针技巧:滑动窗口技巧,并总结出一套框架,可以保你闭着眼直接套出答案。 说起滑动窗口算法,很多读者都会头疼。这个算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案么。LeetCode 上有起码 10 道运用滑动窗口算法的题目,

LBJ_King的博客 647
上一篇: 算法整理-2差分数组
下一篇: 线性代数的本质
folinggg
博客等级 码龄6年 20粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值