思路:
用map存储下标 然后往后找相同的数字 下标比较下就行(一开始 读题读错了 以为找奶牛的个数 想了半天 读题能力还是要加强555)
时间复杂度
总体遍历一遍 用map存储 所以复杂度是 nlog2n 也可以用unordered_map会更快一点
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6;
unordered_map<int,int>mp;
bool f[N+5]; //用来看第一个读取第一个下表
int main()
{
int n,k;
cin>>n>>k;
int x,res=-1;
for (int i = 0; i < n; i ++ ){
cin>>x;
if(f[x]==false){
mp[x]=i;
// cout<<x<<" "<<i<<endl;
f[x]=true;
}
else{
if(i-mp[x]<=k) res=max(res,x); //比较
mp[x]=i;
}
}
cout<<res<<endl;
}