给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5输出: 2


实现思路: 使用二分查找就可以了。如果使用for循环的话,时间复杂度为O(n) 但是使用二分查找 时间复杂度就下降了很多,因此 注意边界的控制。

1.当target与查询的mid值相等 返回

2.当mid的值大于target max = mid-1;

3.当mid的值小于target min = mid+1

时间复杂度:o(logn)

注意边界的控制。

public int searchInsert(int[] nums, int target) {
int min = 0;
int max = nums.length-1;
int mid;
int index = 0;
while (min<=max){
//如果找到
mid = (min+max)/2;
if (nums[mid] == target){
return mid;
}else if (nums[mid]<target){
min = mid+1;
}else {
max = mid-1;
}
}
return min;
}