vJudge 提交 一直超时

题目:
给出包含n个元素的数组a,求a中距离最近的一对 i,j,满足i < j 且 a[i] == a[j]。如果同时存在多对,输出最小的 i 对应的a[i]。

例如:10个数
19,13,11,19,11,5,6,3,4,3
满足存在a[i]=a[j]的数字包括:19,11,3。其中11,3这两对的距离更近,在距离相同的情况下,11的下标更靠前。如果不存在相同的数字,输出 "No"


#include<iostream>
using namespace std;
int main() {
    int size;
    cin >> size;
    int* arr = new int[size];
    for (int i = 0; i < size; i++) {
        scanf("%d", arr + i);
    }
    int min = INT_MAX;
    int minnum = INT_MAX;
    for (int i = 0; i < size; i++) {
        for (int k = i + 1; k < size; k++) {
            if ((arr[i] == arr[k]) && (k - i) < min) {
                min = k - i;
                minnum = arr[i];
                break;
            }
        }
    }
    if (minnum == INT_MAX) {
        cout << "No\n";
    }else cout << minnum;
}

学院让在vjudge 上交题
我寻思 这个都超时了 ,还有更快的吗?

用哈希表