题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。假设数组中无重复元素。
题目来源:https://leetcode-cn.com/problems/search-insert-position
解题思路
二分算法相关使用,请先跳转到 https://blog.youkuaiyun.com/YangLei253/article/details/96917904 学习区间划分图。
根据区间划分图解得此题。
典型的二分算法的应用。
应用
-
确定二分的边界
根据题目容易得知,因此int l = 0,r = nums.size()
。 -
得到区间划分图
采取性质 n u m s [ i ] ≥ t a r g e t nums[i] \geq target nums[i]≥target 很容易得到下面的区间划分图。因此易知采用第一个模板 。
-
书写代码
int searchInsert(vector<int>& nums, int target) { int l = 0,r = nums.size(); while(l < r) { int mid = (l + (long long)r) >> 1; if(nums[mid] >= target) { r = mid; } else { l = mid + 1; } } return l; }