Java实现:
思路都在注释上了。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner myscanner = new Scanner(System.in);
int n = myscanner.nextInt();
int q = myscanner.nextInt();
int[] res1 = new int[q]; //存查询数字的第一个存在的索引
int[] res2 = new int[q]; //------------第二个------索引
int[] arr1 = new int[n]; //存数组
for(int i = 0; i < n; i++) arr1[i] = myscanner.nextInt();
int[] arr2 = new int[q]; //存查询的数字
for(int i = 0; i < q; i++) arr2[i] = myscanner.nextInt();
for(int i = 0; i < q; i++){
int l = 0;
int r = n - 1;
while(l < r) {
int mid = l + r >> 1;
if (arr1[mid] >= arr2[i]) r = mid;
else l = mid + 1;
}
res1[i] = l;
if(arr1[l] == arr2[i]){ //如果找到的第一个数和需要查找的数一样再找第二个数的索引
l = 0;
r = n - 1;
while(l < r){
int mid = l + r + 1 >>1;
if(arr1[mid] <= arr2[i]) l =mid;
else r = mid - 1;
}
res2[i] = r;
System.out.println(res1[i] + " "+ res2[i]);
}else System.out.println("-1 -1"); //否则直接输出-1 -1
}
}
}