23| 画展

代码实现

cpp 复制代码
const int N = 1e6 + 10;
int n, m; 
int a[N], mp[N], kind, cost, ret;

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	int l = 1, r = 1;
	cost = n, ret = 1;
	while(r <= n)
	{
		// 进窗口
		mp[a[r]]++;
		if (mp[a[r]] == 1) kind++;
		
		while(kind == m)
		{
			// 更新结果
			int tmp = r - l + 1; 
			if (tmp < cost)
			{
				ret = l;
				cost = tmp;
			}
			// 出窗口
			mp[a[l]]--;
			if(mp[a[l]] == 0) kind--;
			l++;
		 } 
		 
		 r++;
	}
	cout << ret << " " << ret + cost -1 << endl;
	return 0;
}
相关推荐
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
weilx12342 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本2 天前
离散数学第六课
学习·离散数学
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
Smileyqp沛沛2 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++