给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4
思路分析:
仍然是使用二分法,通过二分法查询返回mid,查询失败返回left。
代码实现:
class Solution {
public int searchInsert(int[] nums, int target) {
int left =0,right = nums.length-1;
int mid = 0;
while(left<=right){
mid = left + (right - left) / 2 ;
if (target == nums[mid]) return mid;
else if (target > nums[mid])left = mid + 1;
else if (target < nums[mid])right = mid - 1;
}
return left;
}
}
提交结果:
64 / 64 个通过测试用例
状态:通过
执行用时: 0 ms
内存消耗: 41.3 MB
提交时间:13 分钟前