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;

}

相关推荐
大Mod_abfun15 分钟前
数字媒体艺术概论(课堂作业/笔记)
笔记·媒体
知识分享小能手16 分钟前
R语言入门学习教程,从入门到精通,R语言数据计算与分组统计(9)
开发语言·学习·r语言
笑鸿的学习笔记30 分钟前
qt-C++语法笔记之Qt Graphics View 框架中的类型辨析完全指南
c++·笔记·qt
lizhihai_9936 分钟前
股市学习心得—半导体12种核心材料
大数据·人工智能·学习
U盘失踪了1 小时前
调用大模型API上下文关联
笔记
sakiko_1 小时前
UIKit学习笔记3-布局、滚动视图、隐藏或显示视图
前端·笔记·学习·objective-c·swift·uikit
koo3641 小时前
周报5.3
笔记
嵌入式-老费2 小时前
瑞芯微soc的学习和应用(题外话之esp32开发)
学习
辰同学ovo3 小时前
从全局登录状态管理学习 Redux
前端·javascript·学习·react.js
ting94520003 小时前
告别无效学习:Scholé 如何用 AI 重构职场学习,让学习直接嵌入工作流
人工智能·学习·重构