题目描述
解题代码
// 遍历 func searchInsert(nums []int, target int) int { index := 0 for i, num := range nums { index = i if target <= num { break } index++ } return index }
// 二分法 func searchInsert(nums []int, target int) int { n := len(nums) // 定义左右闭区间[l , r] l := 0 r := n-1 // 因为是闭区间所以 l = r 也有效 for l <= r { // 控制范围 mid := l + (r - l)/2 if nums[mid] > target { // target 在左区间,所以[l, mid - 1] r = mid - 1 } else if nums[mid] < target { // target 在右区间,所以[mid + 1, r] l = mid + 1 } else { // 1. 目标值等于数组中某一个元素 return mid; return mid } } // 2.目标值在数组所有元素之前 3.目标值插入数组中 4.目标值在数组所有元素之后 return r + 1; return r + 1 }
提交结果