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

【leetcode100】搜索插入位置

1、题目描述

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

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

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

2、初始思路

2.1 思路

使用二分查找法,左闭右闭

2.2 代码

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        n = len(nums)-1
        def search(l,r,target):
            mid = (l+r) // 2
            if l>r:
                return l
            if nums[mid] == target:
                return mid
            elif nums[mid] < target:
                return search(mid+1, r,target)
            else:
                return search(l,mid-1,target)
        return search(0,n,target)

或 

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l, r = 0, len(nums)-1
        while (l<=r):
            mid = (l + r) // 2
            if nums[mid] > target:
                r = mid -1
            elif nums[mid] < target:
                l = mid + 1
            else:
                return mid
        return l

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

相关文章:

  • ADQ12DC-PCIe总线直流耦合1G采集卡
  • 【leetcode100】搜索二维矩阵
  • Android Room 框架测试模块源码深度剖析(五)
  • Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器
  • 【模拟】从 0 到 1:模拟算法的深度剖析与实战指南
  • 实验4 Vue.js路由实验
  • 【AI论文】ReCamMaster:基于单视频的相机控制式生成渲染
  • 如何打造企业 DevOps 文化
  • LeetCode 第22~24题
  • Java学习------初识JVM体系结构
  • 【C++】 —— 笔试刷题day_6
  • 如何实现一个DNS
  • Lora 中 怎么 实现 矩阵压缩
  • 天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
  • 1-1 MATLAB深度极限学习机
  • Mac:JMeter 下载+安装+环境配置(图文详细讲解)
  • C#命令行参数用法
  • Python-docx库详解:轻松实现Word文档自动化生成与图片尺寸控制
  • 组播实验--IGMP、IGMP Snooping 及 PIM-DM 协议
  • 大语言模型(LLM)解析:从 GPT 到 DeepSeek(Transformer 结构、主流 LLM 的对比)