给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
class Solution {
public int searchInsert(int[] nums, int target) {
int low=0;
int height = nums.length - 1;
int mid;
if(target<=nums[low]){
return 0;
}else if(target>nums[height]){
return nums.length;
}
while(low <= height){
mid = low + (height-low)/2;
if(target == nums[mid]){
return mid;
}else if(target<nums[mid]){
height = mid -1;
}else if(target>nums[mid]){
low = mid +1;
}
}
return height+1;
}
}
四个判断条件
1、比最小的小,返回0
2、比最大的大,返回数组长度
3、存在与target相等的数,返回该数的下标
4、插入在数组中间的数,height+1