力扣每日一题35:搜索插入的位置

题目描述:

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

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

复制代码
输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

复制代码
输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

复制代码
输入: nums = [1,3,5,6], target = 7
输出: 4

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums无重复元素升序排列数组
  • -104 <= target <= 104

思路及题解:

找到第一个大于等于target的数的下标即可,如果没有大于等于target的数,就插入数组尾部,即返回numsSize。用二分法查找。

代码:

复制代码
int searchInsert(int* nums, int numsSize, int target){
    int lo=0;
    int hi=numsSize-1;
    int mid;
    int ans=numsSize;
    // if(nums[0]>target) return 0;
    // if(target>nums[hi]) return numsSize;
    //找第一个大于等于target的数
    while(lo<=hi)
    {
        mid=(lo+hi)/2;
        if(target<=nums[mid])
        {
            ans=mid;
            hi=mid-1;
        }
        else
        {
            lo=mid+1;
        }
    }
    return ans;
}
相关推荐
徐小夕2 分钟前
我们放弃了单Agent方案:HiCAD 3.0 用 Harness 做多Agent编排,把3D建模的准确率提升了30%
前端·算法·github
洛水水6 分钟前
【力扣100题】88.多数元素
数据结构·算法·leetcode
Shan120511 分钟前
无向图的Hierholzer算法流程(一)
算法
一切皆是因缘际会15 分钟前
频域特征解构底层机理与双域融合鉴伪算法优化
人工智能·算法·ai·架构
Smilecoc18 分钟前
决策树(三):剪枝
算法·决策树·剪枝
bIo7lyA8v23 分钟前
算法性能建模的数值方法与误差分析的技术8
算法
Smilecoc23 分钟前
决策树(四):决策树实战之鸢尾花分类
算法·决策树·分类
-Thinker23 分钟前
【无标题】
java·开发语言·算法·图搜索
数据仓库搬砖人24 分钟前
DBSCAN 原理深度解析:从聚类算法到风控团伙识别的实战指南
算法
凡人叶枫32 分钟前
Effective C++ 条款24:若所有参数皆须要类型转换,请为此采用 non-member 函数
linux·前端·c++·算法·嵌入式开发