滑动窗口 + 算法复习

news/2024/12/23 22:48:16 标签: 算法, 数据结构

维护一个满足条件的窗口大小,然后进行双指针移动

1.最长子串

题目链接:1.最长子串 - 蓝桥云课

#include<bits/stdc++.h>
#define int long long
using namespace std;
string s;
int k;
signed main()
{
	int max_len=0,left=0;
	cin>>s>>k;
	unordered_map<char,int>nums; //滑动窗口双指针
	for(int right=0; right<s.size(); right++)
	{
		nums[s[right]]++;
		while(nums[s[right]]>k) //如果某个字符的频率超过了 k,则缩小窗口
		{
			nums[s[left]]--;
			left++;
		}
		max_len=max(max_len,right-left+1);
	}
	cout<<max_len<<endl;
	return 0;
}

2.满足条件的子串个数

题目链接:6.满足条件的子串个数 - 蓝桥云课

#include<bits/stdc++.h>
#define int long long
using namespace std;
string s;
int k;
signed main()
{
	int sum=0,left=0;
	cin>>s>>k;
	unordered_map<char,int>nums; //滑动窗口双指针
	for(int right=0; right<s.size(); right++)
	{
		nums[s[right]]++;
		while(nums[s[right]]>k) //如果某个字符的频率超过了 k,则缩小窗口
		{
			nums[s[left]]--;
			left++;
		}
		sum+=(right-left+1); //以新right新形成的好串的数量
//		abc
//		a    a 1
//		ab   b ab 2
//		abc  c bc abc 3
	}
	cout<<sum<<endl;
	return 0;
}

3.区间平均值

题目链接:0区间平均值 - 蓝桥云课

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
signed main()
{
	cin>>t;
	while(t--)
	{
		int n,k;
		int x[110],sum[110];
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>x[i];
			sum[i]=sum[i-1]+x[i];
		}
		cin>>k;
		while(k--)
		{
			int l,r;
			cin>>l>>r;
			printf("%.2f\n",1.0*(sum[r]-sum[l-1])/(r-l+1)); 
		}
	}
	return 0;
} 

http://www.niftyadmin.cn/n/5797090.html

相关文章

序列化和反序列化(一)

因为通过这段时间的学习&#xff0c;发现&#xff0c;序列化和反序列化的考点和漏洞在平时遇到的还是比较多的&#xff0c;而且自己也没有特别去学习过这个知识点&#xff0c;所以在这里写一篇关于这里序列化和反序列话的博客&#xff0c;废话就停止在这里了。 在介绍具体的序列…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具&#xff0c;用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持&#xff08;如 requ…

计算机网络之王道考研读书笔记-2

第 2 章 物理层 2.1 通信基础 2.1.1 基本概念 1.数据、信号与码元 通信的目的是传输信息。数据是指传送信息的实体。信号则是数据的电气或电磁表现&#xff0c;是数据在传输过程中的存在形式。码元是数字通信中数字信号的计量单位&#xff0c;这个时长内的信号称为 k 进制码…

JAVA基础:JavaDoc生成文档

JAVA基础:JavaDoc生成文档 javadoc命令是用来生成自己的API文档的 API API 是“Application Programming Interface”的缩写,中文意思是“应用程序编程接口”。 java中的API [JAVA官方网站中的API](Overview (Java Platform SE 8 )) 我们可以调用这些接口(API)来使用,…

1-Gin介绍与环境搭建 --[Gin 框架入门精讲与实战案例]

Gin 介绍 Gin 是一个用 Go&#xff08;Golang&#xff09;编写的 Web 框架&#xff0c;它以极高的性能和简洁的 API 设计而闻名。Gin 的设计灵感来自于 Martini 框架&#xff0c;但它的性能更优&#xff0c;延迟更低&#xff0c;非常适合构建高效的微服务和 RESTful API 服务。…

C++打造局域网聊天室第十二课: 客户端和服务端的切换

文章目录 前言一、补充说明二、客户端和服务端身份状态的切换三、点击关闭窗口按钮总结 前言 C打造局域网聊天室第十二课&#xff1a; 客户端和服务端的切换 一、补充说明 在C打造局域网聊天室第十一课&#xff1a; 程序关闭及线程的结束中描述的服务端线程的关闭和结束是存在…

Python调用open ai接口

要使用 Python 调用 OpenAI 的接口&#xff0c;您需要完成以下几个步骤&#xff1a; 1. **注册并获取 API 密钥** 2. **安装 OpenAI 的 Python 库** 3. **编写 Python 代码以调用 API** 以下是详细的步骤说明&#xff1a; --- ### 1. 注册并获取 API 密钥 首先&#xff0c…

AtCoder Beginner Contest 385(A~F)题解

A - Equally 思路&#xff1a;由题可知最多只能分成三组&#xff0c;我们只需要判断是否三个数都相等&#xff0c;或者两个数相加等于另外一个数即可 #include<bits/stdc.h> using namespace std; #define int long long int n; string s; int a,b,c; signed main() {ci…