https://www.acwing.com/problem/content/1971/
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N = 1e6 + 10;
int k, n, pre[N];//定义了一个pre数组,用于记录上一个id出现的位置
//因为数据范围比较小,最大1e6,所以可以作为数组下标,通过pre记录每一个id上次出现的位置
int main()
{
fill(pre,pre + N, -0x3f3f3f3f);//位于algorithm下,可以初始化每一个为很小的数使它被减大于k;
cin >> n >> k;
int ans = -1;
for (int i = 0, id; i < n; i ++)//i是位置, id是奶牛ID
{
cin >> id;//输入一个判断一个,O(n)复杂度
if(i - pre[id] <= k) ans = max(ans, id);
pre[id] = i;
}
cout<<ans;
}
代码非常的短,对于萌新的思维锻炼非常不错