LeetCode in Python 704. Binary Search (二分查找)

devtools/2024/9/25 6:19:33/

二分查找是一种高效的查询方法,时间复杂度为O(nlogn),本文给出二分查找的代码实现。

示例:

代码:

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

解释:

1)当nums[mid] > target时表明target在[0, mid]区间内,故将右指针r移至mid-1,同理当nums[mid] < target时表明target在[mid, len(nums) - 1]区间内,将左指针移至mid+1,直到不满足循环l<=r时退出或找到target的位置返回下标指针。

2)注意while循环的条件l<=r,若为l<r,则当数组只有一个元素时将无法返回正确下标位置。


http://www.ppmy.cn/devtools/8701.html

相关文章

MySQl-8.3.0版本安装下载教程(超详细保姆级教程)

第一步&#xff0c;去百度找到MySQl官网 第二步,找到DOWNLOAD&#xff08;下载&#xff09; 第三步 第四步 第五步 第六步.选择倒数第2个 第七步 第八步然后根据步骤安装就好了

RX.Net 第二章 hello Word

本章提供了一个简单而强大的例子&#xff0c;你可能在过去做过(或者将来可能会做)&#xff0c;并以两种方式解决它:传统的事件风格和Rx风格的事件处理流。 net中编写事件驱动的应用程序非常直观&#xff0c;但在资源清理和代码可读性方面需要注意。 要使用Rx库&#xff0c;需要…

视频技术笔记-色差分量

色差分量接口采用YPbPr和YCbCr两种标识。 YPbPr&#xff1a;表示逐行扫描色差输出。 YCbCr&#xff1a;后者表示隔行扫描色差输出。 色差分量接口一般利用3根信号线分别传送亮色和两路色差信号。 色差分量接口是色差接口使用不是很普遍&#xff0c;主要的原因是一些CRT电视机…

python基础语法+爬虫+图像处理+NumpyPandas数据处理(12天速成,第7天上-爬虫Scrapy)

爬虫&#xff08;Scrapy&#xff09;:写一段程序代码&#xff08;网络访问&#xff09;&#xff0c;自动获取网页&#xff08;网络&#xff09;上的数据服务端语言&#xff1a;网络编程&#xff0c;都可以作为爬虫java c c python 等均可写爬虫程序js不是一个典型的服务端程序&…

【Hadoop】-HDFS的Shell操作[3]

目录 前言 一、HDFS集群启停命令 1.一键启停脚本可用 2.独立进程启停可用 二、文件系统操作命令 1、创建文件夹 2、查看指定目录下内容 3、上传文件到HDFS指定目录下 4、查看HDFS文件内容 5、下载HDFS文件 6、拷贝HDFS文件 7、追加数据到HDFS文件中 8、HDFS数据移…

Spring Boot WebService 实战解析

Spring Boot WebServices 实战解析&#xff1a;Endpoint vs WebService 前言 Web Services 是特殊的网络服务&#xff0c;它允许位于不同地点的计算机程序通过互联网交流和共享数据。这些服务可以通过多种方式实现&#xff0c;其中包括使用SOAP协议和遵循REST原则。 在SOAP的实…

排序算法总结

1.冒泡排序 冒泡排序是经典的入门算法&#xff0c;可以说每个人都会写它&#xff0c;但它也可以优化。在面试中让写冒泡排序&#xff0c;不要简单以为就是让你写两重循环&#xff0c;可能是在考察你对它的优化。 基础版本&#xff1a; public void sort(int[] arr){int len …

C#编程过程中List、array、ArrayList这三个推荐用那个

在 C# 编程中&#xff0c;选择使用 List、数组&#xff08;array&#xff09;、ArrayList 这三个集合类型取决于具体的需求和场景&#xff1a; List&#xff1a; List 是泛型集合&#xff0c;提供了类型安全性和性能优势&#xff0c;通常情况下是最佳选择。 当你需要在集合中…