当前位置: 首页 > article >正文

leetcode 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 <= 10e4
  • -10e4 <= nums[i] <= 10e4
  • nums 为 无重复元素 的 升序 排列数组
  • -10e4 <= target <= 10e4

分析:题目要求使用O(log n)的算法,即二分查找。每次二分若位置等于target,则返回当前位置;若小于,则说明在右边;若大于,说明在左边。结束查找的条件为当前长度为1.注意最后放的位置应该是第一个大于target值的位置。

int searchInsert(int* nums, int numsSize, int target) {
    int l=0,r=numsSize;
    while(l<r)
    {
        int mid=(l+r)>>1;
        if(nums[mid]==target)return mid;
        else if(nums[mid]>target)
        {
            if(mid==l)return l;
            else r=mid;
        }
        else if(nums[mid]<target)
        {
            if(mid==r-1)return r;
            else l=mid+1;
        }
    }
    return l;//最后的return无关紧要
}


http://www.kler.cn/a/397413.html

相关文章:

  • 营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战
  • C++创建型设计模式体现出的面向对象设计原则
  • lua实现雪花算法
  • 【大数据学习 | HBASE高级】hive操作hbase
  • ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:基于数据特征的存储格式选择(上)(19/30)
  • python re模块 详解
  • 在k8s上部署Crunchy Postgres for Kubernetes
  • 流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute
  • Django的RBAC认证和权限
  • Python + Memcached:分布式应用程序中的高效缓存
  • pytest中的断言:深入解析与实践
  • Net.Core Mvc 添加 log 日志
  • 1、PyTorch介绍与张量的创建
  • 迅睿CMS如何实现文章自动推送百度的便捷方法?
  • 怎样遵守编程规范,减少和控制C++编程中出现的bug?
  • uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置
  • phonemizer 获取英文文本句子单词音素 - python实现
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序2 架构for认知系统 :机器学习及其行动门上的机器人
  • Gitcode文件历史记录查看和还原
  • 论文解析:基于区块链的去中心化服务选择,用于QoS感知的云制造(四区)
  • C/C++基础知识复习(19)
  • 【Docker容器】一、一文了解docker
  • shell脚本(2)
  • 【分布式】万字图文解析——深入七大分布式事务解决方案
  • 数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题