题解:CF1257C Dominated Subarray
这是一道贪心的题目。
实际上有可能最短的子序列就是开头和结尾是同一个数,中间都是不同的数字。我们维护整个数列中每个数字
#include<bits/stdc++.h>
using namespace std;
unordered_map<int, int> l;
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int ans = INT_MAX;
l.clear();
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
if (l.count(x)) ans = min(ans, i - l[x] + 1);
l[x] = i;
}
cout << (ans == INT_MAX ? -1 : ans) << '\n';
}
return 0;
}