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;

}

相关推荐
蒸蒸yyyyzwd3 小时前
cpp对象模型学习笔记1.1-2.8
java·笔记·学习
阿蒙Amon3 小时前
TypeScript学习-第7章:泛型(Generic)
javascript·学习·typescript
Hill_HUIL3 小时前
学习日志23-路由高级特性(静态路由)
网络·学习
dalong103 小时前
A14:自定义动画演示
笔记·aardio
今儿敲了吗4 小时前
鸿蒙开发第一章学习笔记
笔记·学习·鸿蒙
闪闪发亮的小星星4 小时前
刚体运动学复习笔记
笔记
林深现海6 小时前
【刘二大人】PyTorch深度学习实践笔记 —— 第一集:深度学习全景概述(超详细版)
pytorch·笔记·深度学习
经年未远7 小时前
vue3中实现耳机和扬声器切换方案
javascript·学习·vue
Hill_HUIL7 小时前
学习日志22-静态路由
网络·学习
莱茶荼菜7 小时前
yolo26 阅读笔记
人工智能·笔记·深度学习·ai·yolo26