35. 搜索插入位置
题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
方法 二分查找
如果存在目标值,直接返回
否则一直搜索,最后返回leftindex。
如果最后mid大于目标值,right为mid-1,此时插入位置为left;
如果mid小于目标值,left为mid+1,此时插入位置为left。
代码
package easy.搜索插入位置35;
class Solution {
public int searchInsert(int[] nums, int target) {
int n = nums.length;
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = ((right - left) >> 1) + left;
if(target <= nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return left;
}
}
标签:int,位置,mid,插入,算法,搜索,目标值,left
From: https://www.cnblogs.com/loongnuts/p/17051842.html