给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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
思路:在二分算法的基础上改进,如果在nums中找到,则返回对应的索引。如果没有找到target则返回应该插入的索引
满足条件如下:
nums[mid] ==target或者nums[mid-1]
nums[mid]
【Leetcode35 搜索插入位置】注意:上述方法需要处理边界问题,否则无法正确返回索引。
class Solution {
public:
int searchInsert(vector& nums, int target) {
int begin= 0 , end = nums.size()-1;
//处理边界
if(targetnums[end])return end+1;
while(begin<=end)
{
int mid = (begin+end)/2;
if((nums[mid]==target)||(nums[mid-1]
推荐阅读
- Python - Search Insert Position
- Data|单链表的增删查改
- 软件编程|STL使用总结
- Probabilistic|一次遍历等概率选取字符串中的某个字符
- 欧几里得算法(即辗转相除法)的时间复杂度log(N)的简洁证明
- 八皇后问题 回溯递归 C语言版
- memcopy
- HMM与序列标注
- 计算复杂性理论