C++ 查找非降序列中与给定值最接近的元素
#include
using namespace std;
int main() { int n; cin >> n;
vector<int> sequence(n);
for (int i = 0; i < n; i++) {
cin >> sequence[i];
}
int m;
cin >> m;
vector<int> queries(m);
for (int i = 0; i < m; i++) {
cin >> queries[i];
}
for (int i = 0; i < m; i++) {
int target = queries[i];
int left = 0;
int right = n - 1;
int closest = INT_MAX;
while (left <= right) {
int mid = left + (right - left) / 2;
if (sequence[mid] == target) {
closest = target;
break;
} else if (sequence[mid] < target) {
closest = sequence[mid];
left = mid + 1;
} else {
closest = sequence[mid];
right = mid - 1;
}
}
cout << closest << endl;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/quJE 著作权归作者所有。请勿转载和采集!