经典滑动窗口试题(二)

文章目录
- 一、水果成篮
- 1、题目讲解
- 2、讲解算法思路
- 3、代码实现
- 二、找到字符串中所有字母异位词
- 1、题目讲解
- 2、讲解算法思路
- 3、代码实现
- 三、串联所有单词的子串
- 1、题目讲解
- 2、讲解算法思路
- 3、代码实现
- 四、最小覆盖子串
- 1、题目讲解
- 2、讲解算法思路
- 3、代码实现
一、水果成篮
1、题目讲解


2、讲解算法思路

3、代码实现
class Solution {
public:int totalFruit(vector<int>& f) {int n=f.size();unordered_map<int,int> hash;int ret=0;for(int left=0,right=0;right<n;right++){hash[f[right]]++;while(hash.size()>2){hash[f[left]]--;if(hash[f[left]]==0){hash.erase(f[left]);}left++;}ret=max(ret,right-left+1);}return ret;}};
二、找到字符串中所有字母异位词
1、题目讲解

2、讲解算法思路

3、代码实现
class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> ret;int hash1[256]={0},len=p.size();for(char ch:p) hash1[ch]++;int hash2[256]={0};for(int left=0,right=0,count=0;right<s.size();right++){char in=s[right];hash2[in]++;if(hash2[in]<=hash1[in]) count++;if(right-left+1>len){char out=s[left];if(hash2[out]<=hash1[out]) count--;hash2[out]--;left++;}if(count==len){ret.push_back(left);}}return ret; }
};
三、串联所有单词的子串
1、题目讲解


2、讲解算法思路

3、代码实现
class Solution {
public:vector<int> findSubstring(string s, vector<string>& words) {vector<int> ret;unordered_map<string,int> hash1;for(auto ch:words){hash1[ch]++;}int len=words[0].size(),m=words.size();for(int i=0;i<len;i++){unordered_map<string,int> hash2;for(int left=i,right=i,count=0;right+len<=s.size();right+=len){string in=s.substr(right,len);hash2[in]++;if(hash1.count(in) && hash2[in]<=hash1[in]) count++;if(right-left+1>len*m){string out=s.substr(left,len);if(hash1.count(out) && hash2[out]<=hash1[out]) count--;hash2[out]--;left+=len;}if(count==m) ret.push_back(left);}}return ret;}
};
四、最小覆盖子串
1、题目讲解

2、讲解算法思路

3、代码实现
代码一
class Solution {
public:string minWindow(string s, string t) {int hash1[256]={0};int kinds=0;for(auto ch:t){if(hash1[ch]==0) kinds++;hash1[ch]++;}int hash2[256]={0};int minlen=INT_MAX,begin=-1;for(int left=0,right=0,count=0;right<s.size();right++){char in=s[right];hash2[in]++;if(hash2[in]==hash1[in]) count++;while(count==kinds){if(right-left+1<minlen){minlen=right-left+1;begin=left;}char out=s[left++];if(hash2[out]--==hash1[out]) count--; } }if(begin==-1) return "";else return s.substr(begin,minlen);}
};
代码二 不使用kinds来计算种类
class Solution {
public:string minWindow(string s, string t) {int hash1[256]={0},n=t.size();for(char ch:t){hash1[ch]++;}int begin=-1,len=INT_MAX;int hash2[256]={0};for(int left=0,right=0,count=0;right<s.size();right++){char in=s[right];hash2[in]++;if(hash2[in]<=hash1[in]) count++;while(count==n){if(right-left+1<len){begin=left;len=right-left+1;}char out=s[left];if(hash2[out]<=hash1[out]) count--;hash2[out]--;left++;}}if(begin==-1) return "";else return s.substr(begin,len);}};
相关文章:
经典滑动窗口试题(二)
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、水果成篮1、题目讲解2、讲解算法思路3、代码实现 二、找到字符串中所有字母异位词1、题目…...
easyexcel指定sheet页动态给行列加背景色
需求 1、easyexcel,有多个sheet页,某些sheet页的行、列动态需要加背景色。 2、扩展支持cellStyle标记单元格超过64000 import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.handler.…...
设计模式在实际业务中应用 - 模版方法
1. 业务背景 作者在工作中主要主导 A 业务线的系统建设,A 业务线主要是零售场景酒水的售卖与即时配送服务。为了方便运营在自研系统中对多平台商品进行管理而开发的三方平台商品管理功能,本次介绍的模版方法模式则是在该功能开发过程中的落地实践。 2.…...
BGP综合实验
任务如下: 1.AS1存在两个环回,一个地址为192.168.1.0/24该地址不能在任何协议中宣告 AS3存在两个环回,一个地址为192.168.2.0/24该地址不能在任何协议中宣告,最终要求这两个环回可以互相通讯 2.整个AS2的IP地址为172.16.0.0/16&…...
Global Surface Summary of the Day 全球逐日气象站点数据 GSOD数据集
数据名称 Global Surface Summary of the Day 数据内容 数据包含以下气象要素的日值观测数据: 气压:平均气压、海平面气压;气温:平均气温、日最高气温、日最低气温;湿度:露点温度(需自行换算…...
Harmony OS4开发入门
代码地址: https://gitee.com/BruceLeeAdmin/harmonyos/tree/master 项目目录介绍 ArkTS介绍 简单案例: State times: number 0/*数据类型:stringnumberany: 不确定类型,可以是任意类型*/State msg: string "hello"…...
.net core 事务
在 .NET Core 中,可以使用 Entity Framework Core 来实现事务处理。下面是一个简单的示例,展示了如何在 .NET Core 中使用 Entity Framework Core 来创建和执行事务: using System; using Microsoft.EntityFrameworkCore; using System.Tran…...
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
MPPT工作流程及算法和硬件的选择
MPPT算法选择 目前,MPPT算法有开路电压比率(离线)、短路电流比率(离线)、观察调节(在线)、极限追踪控制法(在线)。 在光伏控制系统中,因为日照、温度等条件的变化,光伏电池的输出功率也是在不断变化的,为保证使得光伏电池的输出功…...
C#,《小白学程序》第十九课:随机数(Random)第六,随机生成任意长度的大数(BigInteger)
1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary> /// 大数的(加减乘除)四则运算、阶乘运算 /// 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法 /// 除法运算为 Truffer…...
每日一练【移动零】
一、题目描述 283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 二、题目解析 可以…...
QT修改windowTitle的名字以及图片
1.修改名字:点击ui的QMainWindow,然后找到windowTitle的选项修改即可 2.修改windowTitle的图片,依旧是找到windowIcon,选择资源,这个资源可以是你放到qrc里面的图片也可以是外置的图片 3.然后运行就可以看到效果了...
C语言-指针讲解(3)
文章目录 1.字符指针变量1.1 字符指针变量类型是什么1.2字符指针变量的两种使用方法:1.3字符指针笔试题讲解1.3.1 代码解剖 2.数组指针变量2.1 什么是数组指针2.2 数组指针变量是什么?2.2.3 数组指针变量的举例 2.3数组指针和指针数组的区别是什么&#…...
慢 SQL 分析及优化
目录 分析慢 SQL SQL 优化 单表优化 多表优化 慢 SQL:指 MySQL 中执行比较慢的 SQL排查慢 SQL 最常用的方法:通过慢查询日志来查找慢 SQL MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阈值的语句&…...
PTA:计算m到n之间所有素数的和
题目 计算m到n之间所有素数的和,其中 2 < m <n <100 输入格式: 请在这里写输入格式。例如:输入两个正整数 输出格式: 请在这里描述输出格式。例如:输出两个正整数之间的素数和。 样例 输入样例: 在这里给出一组输入。例如&…...
Golang实现YOLO:高性能目标检测算法
引言 目标检测是计算机视觉领域的重要任务,它不仅可以识别图像中的物体,还可以标记出物体的位置和边界框。YOLO(You Only Look Once)是一种先进的目标检测算法,以其高精度和实时性而闻名。本文将介绍如何使用Golang实…...
文档 + 模型
文档 模型 0: 基于MATLAB的soc锂电池系统设计 1: 电力系统继电保护仿真设计-毕业论文 2: 继电保护仿真-三段式电流保护的方案设计及分析-相间短路 3: 直流电机双闭环控制系统 转速电流双闭环调速 4: matlab电力系统继电保护仿真 三段电流保护仿真-双侧电源系统 5: OFDM-MIMO课…...
计算机毕业设计php+bootstrap小区物业管理系统
意义:随着我国经济的发展和人们生活水平的提高,住宅小区已经成为人们居住的主流,人们生活质量提高的同时,对小区物业管理的要求也越来越高,诸如对小区的维修维护,甚至对各项投诉都要求小区管理者做得好&…...
Osg线程模型(选择不当,会引发崩溃)
来自《最长的一帧》...
2161根据数字划分数组
给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列,使得以下条件均成立: 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 pivot 的元素之…...
PvZ Toolkit终极指南:如何轻松掌控植物大战僵尸游戏体验
PvZ Toolkit终极指南:如何轻松掌控植物大战僵尸游戏体验 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 你是否曾经在玩《植物大战僵尸》时感到束手无策?想要无限阳光轻松通…...
Qwen3.5-2B辅助Proteus单片机仿真:代码生成与调试建议
Qwen3.5-2B辅助Proteus单片机仿真:代码生成与调试建议 1. 嵌入式开发的新帮手 最近在调试一个基于STM32的温度监控项目时,遇到了一个奇怪的现象:Proteus仿真中ADC读数总是偏高。花了整整两天时间排查硬件连接和代码逻辑,最后发现…...
梦幻动漫魔法工坊应用案例:为游戏角色设计动漫立绘
梦幻动漫魔法工坊应用案例:为游戏角色设计动漫立绘 1. 游戏角色设计的新选择 在游戏开发领域,角色立绘设计一直是既关键又耗时的环节。传统方式需要雇佣专业画师,从草图到上色往往需要数天时间,成本高昂且迭代困难。现在&#x…...
别再踩坑了!手把手教你查清ONNX、TensorRT和Opset的版本兼容表(附官方链接)
ONNX与TensorRT版本兼容性实战指南:从原理到避坑策略 每次模型部署时遇到"不支持的算子"或"版本不匹配"报错,那种感觉就像在迷宫里转圈——明明官方文档就在那里,却总是找不到关键信息。作为AI工程师,我们花…...
当图论遇到优化:手把手教你用分支限界法解决带权顶点覆盖问题(C++实现)
当图论遇到优化:手把手教你用分支限界法解决带权顶点覆盖问题(C实现) 在算法优化的世界里,图论问题总是散发着独特的魅力。想象这样一个场景:你需要在一个城市部署最少数量的监控摄像头,每个位置的安装成本…...
多品类迷雾:为何亚马逊店铺无法用“宽泛口号”建立有效定位
当一个品牌或店铺像福特汽车一样,横跨多个品类和型号时,便面临一个根本性的定位困境:它无法在任何一个具体的品类中建立“专家”认知,因此被迫退回到寻找一个覆盖所有产品的“最大公约数”——通常是一个宽泛、无力、难以验证的抽…...
基于深度卷积⽹络的车牌识别系统的设计与实现
前言 传统中文车牌识别方法对场景约束较大,且算法实时性差,无法部署在边缘设备上。为解决这些问题,本文提出了一种基于YOLO的无约束场景中文车牌检测与识别方法。该方法利用YOLO目标检测算法进行车牌定位,并结合端到端的识别网络进…...
Qwen3.5-2B保姆级教程:Gradio界面快捷键/拖拽上传/历史搜索技巧
Qwen3.5-2B保姆级教程:Gradio界面快捷键/拖拽上传/历史搜索技巧 1. 前言:认识Qwen3.5-2B Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这个模型主打低功耗、低门槛…...
鸿蒙 HarmonyOS 6 | Media Kit 屏幕捕获填充模式迁移详解
文章目录前言一、填充模式真正影响的是什么二、代码里最关键的是策略对象和调用时序三、适配时别只看设备类型,先看内容和输出比例四、排查方式总结前言 做屏幕录制时,最容易被忽略的一层,是捕获源尺寸和目标输出尺寸并不总是一致。手机长屏…...
使用Alpine配置WSL ssh门户攘
1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...
