比二分查找多了一步:如果没有找到,返回可以插入的位置
基本框架和二分查找类似,之后就要多一步操作.当全部不匹配,即最后一个不相等时,返回插入位置,那么我们要记录最后一个元素的位置.
当小于该元素时,取代它的位置插入,当大于时,插入该元素的后面一个位置.
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
int temp = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (target == nums[mid]) {
return mid;
}else if (target < nums[mid]) {
right = mid -1;
}else {
left = mid + 1;
}
temp = mid;
}
if (target > nums[temp]) {
return temp + 1;
}else
return temp ;
}
}