简单 | 二分查找 |
一. 题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为**O(log n)**
的算法。
二. 题目示例
:::tips
输入: nums = [1,3,5,6], target = 5
输出: 2
:::
:::tips
输入: nums = [1,3,5,6], target = 2
输出: 1
:::
:::tips
输入: nums = [1,3,5,6], target = 7
输出: 4
:::
三. 题目解答
1. 思路
2. 代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let left = 0;
let right = nums.length-1;
let mid = 0;
while (left <= right){
mid = Math.floor(left + (right-left)/2);
if (nums[mid] == target){
return mid;
} else if (nums[mid] > target){
right = mid-1;
} else {
left = mid+1;
}
}
return left;
};