#include <iostream>
using namespace std;
int isGreen(int *a, int index, int target) {
return a[index] >= target;
}
int research(int *a, int n, int target) {
int l = -1;
int r = n;
while (l + 1 < r) {
int mid = (l + r) / 2;
if (isGreen(a, mid, target)) {
r = mid;
} else {
l = mid;
}
}
return r;
}
int main() {
int n;
cin >> n;
int a[1000];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int target;
cin >> target;
int ret;
int idx = research(a, n, target);
if (idx == n || a[idx] != target) {
cout << "[-1,-1]";
} else {
ret = research(a, n, target + 1) - 1;
cout << "[" << idx << "," << ret << "]";
}
return 0;
}
二分查找目标值首尾位置
最新推荐文章于 2024-07-08 22:12:26 发布