专栏文章
题解:AT_abc395_c [ABC395C] Shortest Duplicate Subarray
AT_abc395_c题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miq3ecpz
- 此快照首次捕获于
- 2025/12/03 22:18 3 个月前
- 此快照最后确认于
- 2025/12/03 22:18 3 个月前
题目大意:
有 个数,求一个最短子序列,使得这个子序列里有重复的元素。
方法:
用 存每个数的下标,便利 到 的所有数,如有出现多次的数,每次求两个相同数的下标的差,再将这些差求最小值。
AC code:
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n;
vector<int> g[1000010];
int main(){
cin >> n;
for (int i = 1; i <= n; ++i){
int a;
cin >> a;
g[a].push_back(i);
}
int minn = 0x3f3f3f3f;
for (int i = 1; i <= 1e6; ++i){
if (g[i].size() < 2) continue;
for (int j = 1; j < g[i].size(); ++j)
minn = min(g[i][j] - g[i][j - 1] + 1, minn);
}
if(minn == 0x3f3f3f3f) cout << -1;
else cout << minn;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...