题目:
给出包含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 上交题
我寻思 这个都超时了 ,还有更快的吗?