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;
}
相关推荐
结网的兔子几秒前
前端学习笔记(实战准备篇)——用vite构建一个项目【吐血整理】
前端·学习·elementui·npm·node.js·vue
IronMurphy2 分钟前
【算法十九】33. 搜索旋转排序数组 74. 搜索二维矩阵
线性代数·算法·矩阵
Srend6666 分钟前
【图论】最短路问题
算法·图论
Larry_Yanan9 分钟前
QML学习笔记(六十四)动画相关:State状态、Transition过渡和Gradient渐变
开发语言·c++·笔记·qt·学习
云泽80810 分钟前
蓝桥杯算法精讲:二分算法之二分查找深度剖析
算法·职场和发展·蓝桥杯
电报号dapp11912 分钟前
公链浏览器:区块链世界的“数据透视镜”与哈希查询的艺术
算法·区块链·智能合约·哈希算法
ADHD多动联盟13 分钟前
注意力缺陷是什么?主要有哪些应对策略和干预方法?
学习·学习方法·玩游戏
phltxy16 分钟前
前缀和算法:从一维到二维,解锁高效区间求和
java·开发语言·算法
码上淘金17 分钟前
Prometheus 瘦身指南:小白也能看懂的指标过滤与标签优化
java·算法·prometheus
tankeven18 分钟前
HJ128 小红的双生排列
c++·算法