Papyrus在审判你 • 1个月前
#include <bits/stdc++.h>
using namespace std;
string a[1000005];
map<string, int>tags;
int main() {
int n;
cin >> n;
tags.clear();
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int l = 0, r = 0;
int ans = 1;
int repeat = 0;
tags[a[0]] = 1;
while (r < n && l <= r) {
if (repeat == 0) {
if (r - l + 1 > ans) {
ans = r - l + 1;
}
r++;
if (++tags[a[r]] > 1)
repeat++;
} else {
if (--tags[a[l]] == 1) {
repeat--;
}
l++;
}
}
cout << ans << endl;
return 0;
}
其实思路也很简单,
重点是在于你如何去优化。
评论:
请先登录,才能进行评论