/**
* 搜索插入位置:
* - 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组,返回它将插入的位置。
*/
public class Demo {
/**
* 二分查找法,在数组中找到第一个大于等于target的下标
*/
public int searchInsert(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (target <= nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return left;
}
@Test
public void test() {
System.out.println(searchInsert(new int[]{1, 3, 5, 6}, 2));
System.out.println(searchInsert(new int[]{1, 3, 5, 6}, 7));
System.out.println(searchInsert(new int[]{1, 3, 5, 6}, 0));
}
}