25.1.10学习笔记(算法(滑动窗口))

题目:在leetcode上

解释:什么是滑动窗口呢,在这道题里面,子串的长度为k,所以我们就可以将这个子串看为一个窗口,每次去统计窗口里面有多少满足要求,然后进行相关值的加减,滑动就体现在子串的第一个元素离开窗口,紧接着本来在窗口后的元素进入窗口,这样的步骤就像是窗口向后滑动了一样。

优点:这样相比较暴力求解,大大减小了运算量,复杂度为o(n),相对于暴力的o(nk)少了很多。

下面是按照这个算法写的代码

#define MAX(a,b) (a)>(b)?(a):(b)

int maxVowels(char* s, int k) {

int ans=0,vowel=0;

for(int i=0;s[i];i++){

//1.进入窗口

if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'){

vowel++;

}

if(i<k-1){

continue;

}

//2.更新答案

ans=MAX(ans,vowel);

//3.离开窗口

char out=s[i-k+1];

if(out=='a'||out=='e'||out=='i'||out=='o'||out=='u')

{

vowel--;

}

}

return ans;

}

相关推荐
一味做笔记37 分钟前
C语言学习笔记(抱佛脚版)
笔记·学习
qq_5895681040 分钟前
java学习笔记——多线程
java·笔记·学习·intellij-idea
Warolitbos42 分钟前
Redis学习笔记
redis·笔记·学习
雨出1 小时前
算法学习第十七天:LRU缓存与布隆过滤器
学习·算法·缓存
V---scwantop---信2 小时前
复古卡通纹理噪点印刷打印照片效果PS特效样机 Texturizer Original Design Effect
笔记
Caramel_biscuit2 小时前
STM32 CAN学习(一)
stm32·嵌入式硬件·学习
郭涤生2 小时前
第二章:影响优化的计算机行为_《C++性能优化指南》notes
开发语言·c++·笔记·性能优化
@小张要努力3 小时前
第十三届蓝桥杯国赛电子类单片机学习记录(客观题)
单片机·嵌入式硬件·mcu·学习·蓝桥杯·51单片机·proteus
吴梓穆3 小时前
UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针
笔记·学习·ue4
m0_678693333 小时前
深度学习笔记19-YOLOv5-C3模块实现(Pytorch)
笔记·深度学习·yolo