输入数据包括两行:
第一行两个整数n(1 ≤ n ≤ 10 ^ 5),和需要查找的数target
第二行n个整数,范围均在32位整数内,以空格分隔
输出格式为[begin,end],如果不存在就输出[-1,-1]
6 8 5 7 7 8 8 10
3 4
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int target = scan.nextInt(); scan.nextLine(); int[] nums = new int[n]; for(int i=0; i<n; i++){ nums[i] = scan.nextInt(); } System.out.println("["+searchRange(nums,target)[0]+","+searchRange(nums,target)[1]+"]"); } public static int[] searchRange(int[] nums, int target) { int[] ans = {-1,-1}; if(nums == null || nums.length == 0) return ans; int low = 0, high = nums.length-1; if(low == high && nums[0] == target) return new int[] {0,0}; while(low < high){ int mid = low + (high-low)/2; if(nums[mid] < target){ low = mid + 1; }else{ high = mid; } if(low == high && nums[low] == target){ ans[0] = low; } } low = 0; high = nums.length-1; while(low < high){ int mid = low + (high-low+1)/2; if(nums[mid] > target){ high = mid - 1; }else{ low = mid; } if(low == high && nums[low] == target){ ans[1] = low; } } return ans; } }