思路:
1.首先找到需要查找数字x的左边界
2.其次查到到x的又边界
重点:
查到边界的方法使用二分
注意事项:
在查找x右边界时,mid = (l + r + 1) / 2,是为了防止陷入while的死循环
在查找x左边界时:
while(l < r) {
int mid = (l + r) / 2;
if(num[mid] >= x)
r = mid;
else
l = mid + 1;
}
在查找x右边界时:
while(l < r) {
int mid = (l + r) / 2;
if(num[mid] <= x)
l = mid;
else
r = mid - 1;
}
整理代码如下:
package cn.liyi.day03;
import java.util.Scanner;
public class Demo189 {
public static int[] num = {1, 2, 2, 3, 3, 4};
public static int n = 6;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
while (m-- > 0) {
int x