python 二分查找

【Python】二分查找 二分查找的惊人效率,并非凭空而来。它建立在一个简单、牢固、但绝不容妥协的基石之上:待查找的序列必须是有序的。这个前提,是二分查找算法的“灵魂契约”,一旦违背,整个算法的逻辑将瞬间崩塌。为了理解这一点,让我们想象一个游戏:“猜数字”。无序场景: 我从1到100之间随便想一个数字,不告诉你任何规律。你来猜。有序场景: 我还是从1到100之间想一个数字,但我告诉你:“你每猜一个数,我都会告诉你,我心中的数比你猜的‘大’还是‘小’。”这个“猜数字”游戏,完美地诠释了有序性的价值。有序性提供了一种可预测的单调关系。正 阅读详情
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。


示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1
 

提示:

你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。

题解

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        first = 0
        last = len(nums) - 1

        while last >= first:
            # 以下写法等同于 (first+last) // 2
            # 为什么用下面的写法?
            
            # 因为防止整数越界,当first和last 都是非常大的数字的时候,
            # 相加的和就会导致超出整数的范围,导致整数越界
            mid = first + (last-first) // 2

            if nums[mid] == target:
                return mid
            elif nums[mid] > target:
                last = mid - 1 
            else:
                first = mid + 1
        
        return -1
二分查找算法+Python代码 1二分查找算法 二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 下面的实例说明了二分查找的工作原理。我随便想一个1~100的数字,目标是你以最小的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。 1 2 3 ... 100 假设你从你开始一次往上猜测,过程会是这样的。 这是简... 阅读详情

相关推荐

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 503

LeetCode 704. 二分查找

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 704. 二分查找,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 1037

Win11下Wezterm配置Powershell默认终端全攻略(含主题同步技巧)

本文详细介绍了在Windows 11系统中,如何安装和配置Wezterm终端模拟器,并将其设置为PowerShell的默认终端。内容涵盖使用Winget或手动安装Wezterm,通过修改.lua配置文件切换默认Shell,并同步Campbell主题配色以还原熟悉的PowerShell视觉体验,旨在帮助开发者打造高效、个性化的命令行工作环境。

weixin_28363123的博客 1218

python二分查找

题目是: 给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 示例2: 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1 在pyton中...

qq_51287878的博客 1323

网络工程系统CAD图:从设计到落地的关键技能与实战指南

网络工程并不只是配置路由器和交换机,真正的核心在于将设计方案转化为可施工的物理图纸。网络工程系统CAD图正是连接逻辑设计与物理世界的桥梁,它涵盖综合布线、信息点布置、桥架路由、弱电间规划等关键内容。理解并掌握这套图纸体系,是网络工程师从基础设备调试走向项目主导者、弱电总工乃至网络架构师的重要分水岭。在园区网、数据中心、智能楼宇等真实场景中,一套规范的系统CAD图直接决定了施工质量、验收效率与后期运维的可靠性。本文从基础概念出发,拆解图纸的组成层次、绘制流程和软件工作流,并结合学习路线与就业方向,帮助初学者建

weixin_33860553的博客 391

SAP MTO实战:从销售订单到生产订单的精准触发与配置详解

本文深入解析SAP系统中按订单生产(MTO)模式的核心流程与配置。详细阐述了如何通过精准配置物料主数据策略组、需求类型及计划策略(如策略50),实现从销售订单自动触发生产订单的完整链路。文章结合实战案例,指导用户打通销售与生产环节,并提供了关键事务代码与常见问题排查指南,助力企业实现以销定产,优化库存与成本控制。

weixin_29300931的博客 215

Python实现二分查找算法

引言二分查找是基础算法的一种,有利于我们提高查找效率。问题给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回-1。示列1:输入:nums = [-1, 0, 3, 5, 9, 12, 54, 60, 100], target = 9输出:4示例2:输入:num......

算法与编程之美 4036

华为OD机试2025C卷-双十一最大花费金额[100分](Java_Python3_C++_C语言_JsNode_Go)实现100%通过率

双十一最大花费金额 - 动态规划解法 摘要:本文介绍了华为OD机试中"双十一最大花费金额"问题的动态规划解法。该问题要求在给定N件商品价格和优惠券面额X的情况下,选择若干商品使总花费不超过X且尽可能大。核心解法采用布尔型动态规划数组,记录每个金额是否可被拼出。算法时间复杂度为O(N*X),空间复杂度为O(X)。通过倒序遍历避免重复选择同一商品,最后从X向下查找第一个可达金额作为答案。文中提供了C++和Java的实现代码,并解释了与经典0-1背包问题的关系。 关键点: 问题本质是0-1背包/子集和问题的变体

2503_91057718的博客 46

【leecode】二分查找法 python3实现

简单题1:704. 二分查找 题目: 给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。 输入: nums = [-1,0,3,5,9,12], target = 9输出: 4 解释: 9 出现在 nums中并且下标为 4 解法:当看到题目中有“有序”、“升序”,“降序”等关键字,或者隐含顺序关系的时候 ,优先考虑二分法。 class Solution: de...

wenxuegeng的专栏 606

PyTorch生成式人工智能(7)——生成对抗网络(Generative Adversarial Network, GAN)实践详解

生成对抗网络 (Generative Adversarial Network, GAN) 最早由 Ian Goodfellow 于 2014 年提出,其中生成器试图创建与真实样本无法区分的数据样本,而判别器则试图区分生成器生成的样本与真实样本。在本节中,我们将介绍 GAN 的理论基础。然后,介绍如何使用 PyTorch 从零开始构建 GAN,以便了解所有细节,深入理解 GAN 的内部工作原理,为后续讨论 GAN 的其他更高级内容奠定基础,比如生成高分辨率图像或逼真的音乐。

盼小辉丶的博客 1万+

SA8295P QNX主机上电启动流程分析

嵌入式系统的启动过程对于确保系统正常运行至关重要。本文将详细分析SA8295P芯片在QNX主机上的上电启动流程,并提供相应的源代码示例。嵌入式系统的启动过程对于确保系统正常运行至关重要。本文将详细分析SA8295P芯片在QNX主机上的上电启动流程,并提供相应的源代码示例。以下是一个SA8295P QNX主机上电启动流程分析。

CodeMaven的博客 1231

二分查找算法python实现_Python实现-二分查找算法(3种方法)

如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做?lst = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]方法一:lst = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 4...

weixin_28730131的博客 1094

2024阅读AOSP源码的正确打开姿势

在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。

虎哥LoveDroid 2707

二分查找python实现代码_二分查找——Python实现

一、排序思想二、python实现def binarySearchDemo(arr, key):"""python二分查找非递归方式:param arr:待排序列,有序集合:param key:带查找元素"""low = 0high = len(arr) - 1while low <= high:mid = (low + high) // 2if key > arr[mid]:low =...

weixin_42400643的博客 2195

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

二分查找算法python_二分查找算法python

python 二分查找算法函数bi_search(),该函数实现检输入格式: 第一行为正整数 n 接下来若干行为待查找的数字,每行输入一个def prime(n): if nend : return -1 mid=(start+end)//2 if primelist[mid]==prime: return mid elif primelist[mid]>prime: end=mid-1 e...

weixin_34961316的博客 677

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python 二分查找_python 二分查找的三种方式

⼆分查找. 每次能够排除掉一半的数据. 查找的效率非常高. 但是局限性比较大. 必须是有序列才可以使用二分查找要求: 查找的序列必须是有序序列.三种方法:1.纯算法lst=[11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789]n=567left=0right=len(lst)-1co...

weixin_39998903的博客 281

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【数据结构与算法】python实现二分查找

python实现二分查找

weixin_43911004的博客 1万+

二分查找 用python学算法

今天,我们开始第一个算法的学习,二分查找。同时又温习了Python语言,真是一举两的,何乐而不为呢。 假设你在字典里面找一个以K开头的单词,你怎么找?可以从头开始翻页直到进入以K打头的部分。但是你很可能不会这么作,而是从中间开始,因为你知道K开头的单词应该在词典的中间位置。这是一个查找问题,在前述情况下,都可以使用一种算法来解决问题,这种算法就是二分查找。 二分查找是一...

wwwc_fanscn的专栏 368

Python:二分查找

Python:二分查找 前提条件     存储数据的列表或元组中的数据是排好序了的。 实现 设置两个变量,start和end表示开始坐标和末尾坐标,用来计算数组的中间坐标的值; 当中间值和需要查找的值相等的时候,即查找完成; 当需要查找的值大于中间值的时候,就将start赋值为中间坐标值,然后再次计算中间坐标值,进行比较,这样就实现了“二分”和“查找”; 当需要查找的值小于中间值的时候,就将end赋值为中间坐标值,然后再次计算中间坐标值,进行比较,这样就实现了“二分

REDANDBLUE_OvO的博客 492

python实现二分查找非递归_Python 算法 | 二分查找

从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。时间复杂度: O(logn)1、分析思路例如:在列表 [1,2,3,4,5,6,7,8,9]中,使用二分查找来查找3。第1步:取最小值1和最大值9的中间值5,来进行比较,发现3<5,所以,就在1和(5-1)之间找。因为已经确定了比5小,所以,就找5的前一位。imageimage第2步:然后就...

weixin_40000457的博客 521

二分查找 Python 实现

默认返回任意一个匹配的索引。若需找到第一个或最后一个,需修改条件(参考。二分查找(Binary Search)是一种高效的搜索算法,适用于。否则需先排序(排序成本可能抵消二分查找的优势)。通过不断将搜索范围缩小一半,快速定位目标值的位置。需要频繁查找但数据不频繁变动的情况。内存有限时(二分查找无需额外空间)。,初始时分别指向数组的起始和末尾。(索引2),匹配成功,返回索引2。,效率远高于线性搜索(O(n))。(如数据库索引、日志文件)。或抛出异常,依需求而定。时,未找到目标,返回。大 → 搜索左半部分。

全栈测试 594

二分查找 python实现

传统的顺序查找就是一个一个的比,时间复杂度为O(n) 二分查找是很基本的查找方式,前提是待查找的列表是有序的,所以每次都跟中间的那个数比较。 但是如果数据较大,二分查找不一定好用,因为需要先排序,有可能排序需要的成本更高。 下面是二分查找的python实现方法。 def binarySearch(alist, item): first = 0 last = len(alis...

Lisa_Ren_123的博客 673
上一篇: python 数组中第k个最大元素
下一篇: python 稀疏数组搜索
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值