一、题目描述
示例:
二、解题思路
可以用遍历的方法,但是时间复杂度会达到O(n)。这里采用的是二分查找的方法,确定边界left和right,再用mid和目标值进行比较即可。需要注意的是边界条件,如下这三个地方不要弄错。
left = mid + 1;
right = mid - 1;
return left;
三、编程实现
class Solution {
public int searchInsert(int[] nums, int target) {
//二分查找
int left = 0;
int right = nums.length - 1;
while(left <= right){
int mid = (left + right) / 2;
if(nums[mid] == target)
return mid;
else if(nums[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return left;
}
}