题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
解法:
注意边界条件
func searchInsert(nums []int, target int) int {
left, right := 0, len(nums) - 1
if right == 0 {
if nums[0] < target {
return 1
} else {
return 0
}
}
for left < right{
mid := (left + right)/ 2
if nums[mid] == target {
return mid
} else if nums[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
// 这里left==right,需要考虑target==nums[left]的情况
if target <= nums[left] {
return left
}
return left + 1
}