题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
复制代码
思路分析
数组中查找某个元素,使用二分法
AC代码
var searchInsert = function (nums, target) {
// let mid = Math.floor(nums.length / 2)
let right = 0,
left = nums.length - 1
let mid
while (left >= right) {
mid = Math.floor((right + left) / 2)
if (nums[mid] > target) {
//大于,像右查找
left = mid - 1
} else if (nums[mid] < target) {
right = mid + 1
} else {
return mid
}
}
if (target > nums[mid]) {
return mid + 1
} else {
return mid
}
}
复制代码
总结
二分法查找需要注意左右边界的问题
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END