package com.example.leetcode;
public class _704二分查找_左边界 {
public static int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (target == nums[mid]) {
// todo 与常规二分区别, 继续往左边找
right = mid - 1;
} else if (target > nums[mid]) {
left = mid + 1;
} else if (target < nums[mid]) {
right = mid - 1;
}
}
// todo 与常规二分区别,最终left=right 是退出循环的,看left就行,left只会变大
if (right < 0 || left >= nums.length || target != nums[left]) {
return -1;
}
return left;
}
public static void main(String[] args) {
int[] nums = {1, 7, 7, 10, 30};
int search = search(nums, 7);
System.out.println(search);
}
}
二分查找(左边界)
最新推荐文章于 2024-07-21 13:38:21 发布