AcWing 789. 数的范围
原题链接
简单
作者:
Keendy
,
2024-04-07 21:17:15
,
所有人可见
,
阅读 1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 获取输入值
int n = in.nextInt();
int count = in.nextInt();
// 获取完整数组
int[] arr = new int[n];
for (int i = 0; i < n; i++) { arr[i] = in.nextInt(); }
while (count != 0) {
int x = in.nextInt();
int l = leftRangeOfNum(x, arr);
int r = rightRangeOfNum(x, arr);
System.out.printf("%d %d\n", l, r);
count--;
}
}
static int leftRangeOfNum(int x, int[] q) {
int l = 0, r = q.length - 1;
while (l < r) {
int mid = l + r >> 1;
if (q[mid] >= x) {
r = mid;
} else {
l = mid + 1;
}
}
if (q[l] != x) {
return -1;
}
return l;
}
static int rightRangeOfNum(int x, int[] q) {
int l = 0, r = q.length - 1;
while (l < r) {
int mid = l + r + 1 >> 1;
if (q[mid] <= x) {
l = mid;
} else {
r = mid - 1;
}
}
if (q[l] != x) {
return -1;
}
return l;
}
}
java 代码