【51nod】【map】最近的一对
题目
解题思路
用map存储数最近出现的位置
要距离最短,更前面出现的对答案没有贡献
如果当前数之前出现过,构成一对,与答案比较
代码
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,int> lzf;
int n,x,w=100100,ans=100100,a[100010];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
a[i]=x;
if (lzf[x])
if (ans>i-lzf[x]||ans==i-lzf[x]&&w>lzf[x])
ans=i-lzf[x],w=lzf[x];
lzf[x]=i;
}
if (ans==100100)
printf("NO");
else printf("%d",a[w]);
return 0;
}