[面试常问总结] 15. 搜索插入位置 (二分法,找不到的就是当前位置+1)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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
//二分查找 func SearchInsert(nums []int, target int) int { i := 0 length := len(nums) j := length - 1 //根据题意增加的条件判断 //小于等于第一个的时候,是0 if target <= nums[0] { return 0 } if target == nums[j] { return j } //大于最后一个的时候是最后位置+1 if target > nums[j] { return j + 1 } //在这范围内的时候,二分查找 for i <= j { //找出中间的位置 mid := i + (j-i)/2 //比中间位置小,j是mid-1 if target < nums[mid] { j = mid - 1 //比中间位置大,i是mid+1 } else if target > nums[mid] { i = mid + 1 } else { //相等的时候就是找到了 return mid } } //当i等于j的时候,到这个里的,都是二分查找没找到的,那么就是当前位置+1 return j + 1 }
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网
浙公网安备 33010602011771号