算法标签?
查看原帖
算法标签?
528287
多喝岩浆楼主2022/3/24 13:51

这题算法标签怕不是假的,明明双指针就能解决

#include<bits/stdc++.h>
#define LL long long
#define PP pair<int, int>

using namespace std;
const int N = 1e6 + 10;
const int M = 2e3 + 10;

int a[N], cnt;
bool f[N];
int flag[N];
int Minl, Minr, Min = 2147483647;
int l, r;
int n, m;
int main () {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	cnt = m;
	for (r = 1; r <= n; r++) {
		if (f[a[r]] == false) {
			cnt--;
			f[a[r]] = true;
		}
		flag[a[r]]++;
		while (cnt == 0 && l < r) {
			l++;
			flag[a[l]]--;
			if (flag[a[l]] == 0) {
				f[a[l]] = false;
				cnt++;
			}
			int len = r - l + 1;
			if (len < Min) {
				Min = len;
				Minl = l;
				Minr = r;
			}
			
		}
	}
	cout << Minl << ' ' << Minr << endl;
	return 0;
}
2022/3/24 13:51
加载中...