给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
[1,3,5,6]
, 5 → 2
常规方法是遍历数组,在循环中设置查找条件,但是效率不高,这里我们用二分查找的思想实现代码如下:
class Solution{
func searchInsert(_nums:[Int],_target:Int)->Int{
let left = 0
let right = nums.count
if nums[right]<target{
return right
}
while (left<right){
var mid = left + (right-left)/2
if nums[mid]==target {
return mid
}else if nums[mid]<target{
left = mid + 1
}else {
right = mid
}
}
return right
}
}