最近的一对

解题思路
m a p map map 存储每个数上次出现的位置。
code
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int n,l,r=0x3f3f3f3f,ans;
map<int,int> a;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int t;
scanf("%d",&t);
if(a[t]&&i-a[t]<r-l)
l=a[t],r=i,ans=t;
a[t]=i;
}
if(ans)
printf("%d\n",ans);
else
printf("No\n");
}
本文介绍了一种使用哈希表来寻找数组中最近重复数对的高效算法,并提供了完整的C++实现代码。通过记录每个数最后出现的位置,该算法能够在遍历过程中快速更新最短距离的数对。
1414

被折叠的 条评论
为什么被折叠?



