[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 Solution {
public int searchInsert(int[] A, int target) {
int begin = 0;
int end = A.length-1;
while(begin <= end){
int mid = (begin + end) / 2;
if(A[mid] == target){
return mid;
}else if(A[mid] < target){
begin = mid + 1;
}else{
end = mid - 1;
}
}
//目标节点比mid位置的数据要小,根据二分查找应该将target的位置设置为mid,故此返回end+1
if(end < begin){
return end + 1;
}
return begin + 1;
}
}