Leedcode 二分查找每日两练 Python

简介: Leedcode 二分查找每日两练 Python

大一在读 大数据管理与应用专业 欢迎交流

备战蓝桥杯 倒计时72天

目前主要学习Python算法与数据结构 今日主题:二分查找  


image.png在这套流程里 l+1最终等于r 避免以往很多临界左移右移加一减一的讨论情况 并且mid(图片里的m)的范围处在[1,n-1] 真的很棒!

例一:nums为无重复的升序序列

image.png

问题分析 :划分红蓝区域  红区<=target 蓝区>target

若红区最后一个元素等于 target 返回下标 否则返回下标+1


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


image.png

例二:nums是一个非递减数组(前一篇博客出了下面这道的index解法[不建议使用]没有思考尽管 通过效率很高但还是不建议用这种手段做题)


image.png


问题分析:1:找到第一个等于target的数字 划分红蓝区域

红区小于target 蓝区>=target 如果蓝区的第一个元素不等于target(前提是该元素下标可访问) 说明不存在 直接返回[-1,-1]

如果蓝区的第一个元素下标不可访问等价于 l+1>len(nums)-1 返回[-1,-1]

否则返回蓝区的第一个下标X1

2:找到最后一个等于target的数字 划分红蓝区域

红区小于等于target 蓝区大于target

class Solution:
    def searchRange(self, nums: List[int], target: int) -> List[int]:
        l,r=-1,len(nums)
        while l+1<r:
            mid=(l+r)//2
            if nums[mid]>=target:
                r=mid
            else:
                l=mid#红区记录<target
        if l==len(nums)-1:return [-1,-1]#如果不成立 l+1就是其中一个答案
        if nums[l+1]!=target:return [-1,-1]
        l1,r1=l,len(nums)
        while l1+1<r1:
            mid=(l1+r1)//2
            if nums[mid]>target:
                r1=mid
            else:
                l1=mid#红区记录<=target
        return [l+1,l1]


image.png

我是小郑 期待与你一起奔赴山海!蓝桥杯加油!


目录
相关文章
|
分布式计算 并行计算 编译器
NumPy 高级教程——并行计算
NumPy 高级教程——并行计算【1月更文挑战第3篇】
1140 26
|
Java 数据库连接 API
SpringMVC中使用JSR303进行数据校验实践详解
SpringMVC中使用JSR303进行数据校验实践详解
710 7
PageHelper分页插件拼接动态排序语句
PageHelper分页插件拼接动态排序语句
714 0
|
Windows
Anaconda卸载与重装过程记录
本文记录了博主Anaconda卸载与重装过程记录,此为博主电脑环境发生变化,无奈之举,希望对大家有所帮助
3302 0
Anaconda卸载与重装过程记录
|
9月前
|
传感器 数据采集 安全
基于 STM32 的智能窗户控制系统设计与实现【源码分享】
基于STM32与ESP8266设计智能窗户系统,集成温湿度、雨滴、光照、风速等多传感器,实现环境感知、自动开关窗、入侵检测及远程APP控制。支持MQTT/HTTP通信,具备高扩展性与实用性,助力传统家居智能化升级。(239字)
基于 STM32 的智能窗户控制系统设计与实现【源码分享】
|
3月前
|
人工智能 分布式计算 安全
阿里云大数据 AI 平台 Skills 合集
阿里云大数据 AI 平台 Agent Skills(简称 Skills)是阿里云大数据 AI 平台官方提供的 AI Agent 技能发现与安装平台,为 Agent 提供安全、可靠的云资源操作能力,本文汇总阿里云大数据 AI 平台 Skills,帮助用户快速导航。
|
7月前
|
存储 人工智能 API
给大模型配个“外接硬盘”!RAG架构全解析:企业级知识库搭建的终极指南
AI博主详解RAG技术:为大模型“接外挂”,破解幻觉难题。拆解T5-RAG、FiD、RAR三大流派原理与实战,手把手教搭专属知识库助手,附低代码落地方案。(239字)
496 1
|
存储 安全 数据中心
数据中心概述
数据中心是包含计算机系统、通信设备及配套环境控制、安全装置的复杂设施,用于集中存储、处理和传输数据。根据用途可分为企业、运营商和互联网数据中心。其基础设施涵盖机房、供电、散热、网络设备及管理软件。发展历程从大型机时代逐步演进至云计算时代,现以大规模、资源池化为特征。
1318 0
|
PyTorch 算法框架/工具 芯片
新手入门:DGL在昇腾上的安装问题
本文介绍了在aarch64架构和Python 3.10环境下安装DGL(Deep Graph Library)的过程。首先通过`uname -a`确认硬件架构,接着使用`python --version`检查Python版本。为确保兼容性,从指定链接下载适合的whl包或通过pip安装dgl。过程中遇到了torchdata版本不兼容的问题,通过降级torchdata至0.7.1版本解决。此外,针对NPU芯片适配,重新安装了与CANN 8.0.RC2兼容的torch和torch_npu组件。最终成功导入dgl包并准备进行模型训练验证。
1590 14

热门文章

最新文章