publicstaticintbinarySearch(int[] nums,int target){int left =0, right = nums.length-1;while(left <= right){int mid = left +(right-left)/2;if(nums[mid]== target){return mid;}elseif(nums[mid]< target){
left = mid +1;}else{
right = mid -1;}}return-1;}
二分查找某个元素的左边界
例如:
nums = [1, 3, 3, 3, 7, 9, 9, 10], target = 3
返回 1
left < right
退出循环,判断,返回
publicstaticintbinarySearchLeftBorder(int[] nums,int target){int left =0, right = nums.length-1;while(left < right){int mid = left +(right-left)/2;if(nums[mid]>= target){
right = mid;}else{
left = mid +1;}}return nums[left]== target ? left :-1;}
二分查找某个元素的右边界
例如:
nums = [1, 3, 3, 3, 7, 9, 9, 10], target = 3
返回 3
left < right
退出循环,判断,返回
publicstaticintbinarySearchRightBorder(int[] nums,int target){int left =0, right = nums.length-1;while(left < right){int mid = left +(right-left+1)/2;// 确保能退出循环if(nums[mid]<= target){
left = mid;}else{
right= mid -1;}}return nums[right]== target ? right :-1;}
二分查找某个元素是否存在left <= right找到目标后立即返回public static int binarySearch(int[] nums, int target) { int left = 0, right = nums.length-1; while(left < right) { int mid = left + (right-left) / 2; if(nums[mid] == target) {