#include<bits/stdc++.h>
using namespace std;
int main() {
    int n, x, d = 2e9, a = -1;
    map<int, int> m;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> x;
        if (m[x] && i - m[x] < d) {
            d = i - m[x];
            a = x;
        }
        m[x] = i;
    }
    if (a == -1) cout << "No";
    else cout << a;
    return 0;
}

2 条评论

  • @ 2025-12-6 20:13:12

    你给我看看第三题

    • @ 2025-12-6 20:12:08
      
      
          int n, x, d = INT_MAX, a = -1;  // n:数组长度,x:当前输入的数,d:最小距离,a:答案
          map<int, int> m;  
          cin >> n;  // 输入数组长度
          
          for (int i = 1; i <= n; i++) {  // 循环读取每个数
              cin >> x;  // 输入当前数
              
              if (m[x] && i - m[x] < d) {  // 如果之前出现过且距离更小
                  d = i - m[x];  // 更新最小距离
                  a = x;  // 更新答案
              }
              
              m[x] = i;  // 更新这个数最后一次出现的位置
          }
          
          if (a == -1) cout << "No";  
          else cout << a; 
          
         
      
      • 1

      信息

      ID
      150
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      递交数
      125
      已通过
      43
      上传者