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

ops/2025/1/12 0:30:58/

题目:在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;

}


http://www.ppmy.cn/ops/149294.html

相关文章

Spring Boot开发——结合Redis实现接口防止重复提交

文章目录 一、准备工作1、引入依赖2、配置Redis 二、实现代码1、创建Redis服务类2、创建AOP切面类3、自定义注解4、处理异常5、使用注解 三、测试验证1、启动Redis服务2、启动Spring Boot应用3、模拟重复提交 在Web开发中&#xff0c;防止用户重复提交表单是一个常见的需求。例…

Mysql--基础篇--函数(字符串函数,日期函数,数值函数,聚合函数,自定义函数及与存储过程的区别等)

MySQL提供了丰富的内置函数&#xff0c;涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流等多种功能。这些函数可以帮助你简化SQL查询&#xff0c;提升开发效率。 除了内置函数&#xff0c;MySQL还支持自定义函数&#xff08;User-Defined Functions&#xff09;…

el-upload on-preview 扩大预览事件点击范围

1.首先说明开发环境&#xff0c;vue2项目&#xff0c;采用列表模式的el-upload组件时&#xff0c;加入附件预览功能 element官网给出的示范代码是以下写法 <el-uploadclass"upload-demo"action"https://jsonplaceholder.typicode.com/posts/":on-previ…

【Linux】Linux开发:GDB调试器与Git版本控制工具指南

Linux相关知识点可以通过点击以下链接进行学习一起加油&#xff01;初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建 在 Linux 开发中&#xff0c;GDB 调试器和 Git 版本控制工具是开发者必备的利器。GDB 帮助快速定位代码问题&#xff0c;G…

三天学完微服务其二

Nacos注册中心 启动Nacos 配置更新步骤 是修改nacos中的配置后&#xff0c;微服务中无需重启即可让配置生效&#xff0c;也就是**配置热更新**。 方式一 在Value注入的变量所在类上添加注解RefreshScope 方式二 使用ConfigurationProperties注解代替Value注解。 Nacos快速…

GO通过SMTP协议发送邮件

什么是SMTP协议 SMTP&#xff08;Simple Mail Transfer Protocol&#xff0c;简单邮件传输协议&#xff09;是用于发送邮件的协议。当一个邮件服务器需要发送邮件给另一个邮件服务器时&#xff0c;它会使用SMTP协议与目标服务器建立连接&#xff0c;并传输邮件内容。SMTP协议的…

Scala语言的面向对象编程

Scala语言的面向对象编程 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来组织代码&#xff0c;这些对象能够包含数据&#xff08;属性&#xff09;以及功能&#xff08;方法&#xff09;。Scala…

spring boot 多数据源集成mysql、postgresql、phoenix、doris等

如何搭建多数据源项目只要以下简单几步; 一. 创建核心在config.datasource文件夹里 二. 引入相对应的jar包 三. 创建数据库连接配置 四. 写逻辑代码进行验证 1.DataSource package com.irootech.config.datasource;import java.lang.annotation.*;Target({ElementType.MET…