35.搜索插入位置

80 阅读1分钟

题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 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
}