简单 | 二分查找 |
一. 题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为**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;};
