AcWing799:最长连续不重复子序列
题目
思路
代码
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
bool check(int i, int j, const vector<int>& array, unordered_set<int>& seen) {
if (seen.find(array[i]) == seen.end()) {
return false;
}
else
return true;
}
int main() {
int n;
cin >> n;
vector<int> array(n, 0);
for (int i = 0; i < n; i++) {
cin >> array[i];
}
int currentLength = 0;
int maxLength = 0;
unordered_set<int> seen;
for (int i = 0, j = 0; i < n; i++) {
while (check(i, j, array, seen)) {
seen.erase(array[j]);
j++;
}
seen.insert(array[i]);
currentLength = i - j + 1;
maxLength = max(currentLength, maxLength);
}
cout << maxLength;
return 0;
}