二分法变型
可以把target想象成要找的位置,然后low和high想象成游标
package Level2;
/**
*
* Search Insert Position
*
* Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
*
*/
public class S36 {
public static void main(String[] args) {
int[] A = {1,3,5,6};
int target = 7;
System.out.println(searchInsert(A, target));
}
public static int searchInsert(int[] A, int target) {
int low = 0, high = A.length-1;
int mid = low + (high-low)/2;
while(low <= high){
mid = low + (high-low)/2;
if(A[mid] == target){
return mid;
}else if(target > A[mid]){
low = mid+1;
}else{
high = mid-1;
}
}
// 返回下限值,此时刚好为适合插入的位置
return low;
}
}
public class Solution {
public int searchInsert(int[] A, int target) {
int low = 0, high = A.length-1;
while(low <= high){
int mid = low + (high-low)/2;
if(A[mid] == target){
return mid;
}else if(A[mid] > target){
high = mid-1;
}else{
low = mid+1;
}
}
return low;
}
}

本文介绍了一种二分查找的变型实现方法,用于在一个已排序的数组中找到目标值的位置,如果目标值不存在,则返回它应该被插入的位置。通过具体的Java代码示例展示了如何实现这一算法。
443

被折叠的 条评论
为什么被折叠?



