Update BinarySearch.java

This commit is contained in:
2024-07-11 10:41:28 +08:00
parent feb1f5fcad
commit a3f5a177a5

View File

@@ -91,6 +91,7 @@ class BinarySearch {
return candidate; return candidate;
} }
//改进二分查找
public static int binarySearchLeftMost0(int[] nums, int target) { public static int binarySearchLeftMost0(int[] nums, int target) {
int i = 0, j = nums.length - 1; int i = 0, j = nums.length - 1;
while (i <= j) { while (i <= j) {
@@ -116,4 +117,25 @@ class BinarySearch {
} }
return i - 1; return i - 1;
} }
/**
* 给你一个按照非递减顺序排列的整数数组 nums和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
* 如果数组中不存在目标值 target返回 [-1, -1]。
* 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
*
* @param nums
* @param target
* @return
*/
public static int[] searchRange(int[] nums, int target) {
if (nums.length == 0){
return new int[]{-1,-1};
}
if (nums.length == 1){
return new int[]{0,0};
}
int left = binarySearchLeftMost(nums, target);
int right = binarySearchRightMost(nums,target);
return new int[]{left,right};
}
} }