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;
}
相关推荐
用户8055336980310 小时前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
RainCity11 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
To_OC20 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC20 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境1 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
_清歌1 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局1 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象1 天前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法