描述:

请实现有重复数字的升序数组的二分查找

给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1。

数据范围:0 <= n <= 100000

进阶:时间复杂度O(logn),空间复杂度O(n)

示例:

# 示例1
输入:[1,2,4,4,5], 4
返回值:2
说明:从左到右,查找到第1个为4的,下标为2,返回2 # 示例2
[1,2,4,4,5], 3
-1# 示例3
[1,1,1,1,1], 1
0

代码实现:

# 方法一:符合时间复杂度要求
class Solution:def search(self , nums: List[int], target: int) -> int:# write code here# 如果列表为空直接返回-1if not nums:return -1# 定义两个指针,分别指向列表开始和结尾元素beg, end = 0, len(nums) - 1while beg < end:mid = int((beg + end) / 2)if nums[mid] < target:beg = mid + 1else:# 大于等于targetend = mid# 判断beg下标值是否等于targetif nums[end] == target:return begelse:return -1# 方法二:不符合时间复杂度要求
class Solution:def search(self , nums: List[int], target: int) -> int:# write code here# 如果列表为空直接返回-1if not nums:return -1# 定义两个指针,分别指向列表开始和结尾元素beg = 0; end = len(nums) - 1while beg <= end:mid = int((beg + end) / 2)if nums[mid] > target:end = mid - 1elif nums[mid] < target:beg = mid + 1else:temp = midwhile temp >= 0 and nums[temp] == target:temp -= 1return temp + 1return -1

Python算法二分查找之重复元素列表相关推荐

  1. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

  2. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. python函数教程:Python递归函数 二分查找算法实现解析

    这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...

  4. Python实现二分查找算法,图片结合代码讲解,简单易懂

    Python实现二分查找算法,图片结合代码讲解,简单易懂 二分查找是指在一个数组中循环找到特定的目标元素的一种算法,二分查找算法要求这个数组必须是有序的,如果不是有序则最后得出的结果是不准确的,因为其 ...

  5. python二分查找算法_如何使用python的二分查找算法

    如何使用python的二分查找算法 发布时间:2020-11-18 09:27:29

  6. python中二分查找什么意思_python中二分查找法的实现方法

    如果想要在有序数据中进行查找想要的数据,二分查找法就个好方法,它可以大大缩短了搜索时间,是一种常见的查找方法.二分查找很好写,却很难写对,下面,小编就简单向大家介绍一下二分查找,并演示器使用代码. 1 ...

  7. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

  8. 数据结构与算法——二分查找与二叉查找树汇总整理

    目录 预备知识:二分查找基础知识 例1:插入位置(easy) (二分查找) 例2:区间查找(medium)(二分查找) 例3:旋转数组查找(medium)(二分查找) 预备知识:二叉查找(排序)树基础 ...

  9. python实现二分查找(对新手友好,内容通俗易懂)

    python实现二分查找 二分查找又名折半查找. 优点:查询速度快,性能好. 缺点:要求查询的表为有序表 原理:将表中间位置(mid)的数字与待查数字(data)做比较, 如果相等:返回true,结束 ...

最新文章

  1. PHP编实现程动态图像的创建
  2. OpenCV iOS-图像处理
  3. vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...
  4. 阿里云服务器如何创建快照备份数据
  5. mysql连接规定时区以及编码_springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决...
  6. ssl协议,openssl,创建私有CA
  7. android sdk无法启动不了,无法启动Android SDK管理器
  8. 计算机主机结构讲解,电脑内部结构图和讲解
  9. 修改CentOS默认yum源地址提高下载速度
  10. springboot整合jwt_springboot整合jwt实现身份验证
  11. TC TT运行状态监控
  12. 计算广告-商业化体系
  13. la java va bien口琴谱_口琴曲简谱
  14. 原来路由器也属于消耗品
  15. 数据库数据的备份和还原
  16. 深圳计算机中级职称入户,深圳积分入户中级职称积分,这些证书助你轻松入户!...
  17. cmd命令让计算机崩溃,十大危险的cmd指令,谨慎使用
  18. ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用
  19. 异步传输中的批量发送问题
  20. 计算机专业英语名词解释

热门文章

  1. [MAUI]模仿网易云音乐黑胶唱片的交互实现
  2. python 抓包解析数据_Python抓包并解析json爬虫的完整实例代码
  3. ubuntu中的安装的docker环境重启php环境
  4. 史上最全的spark面试题——持续更新中
  5. java积累----ISO8601格式时间转化为Datetime类型
  6. 应用宝苹果版_点赞应用ios版下载-点赞应用苹果版下载v1.1
  7. 榆熙电商:提升店铺星级的技巧都有哪些?
  8. 高等数学学习笔记——第十四讲——函数极限的概念(1. 函数在无穷远处极限定义)
  9. JavaScript基础:Iterator概念及用法
  10. 使用python登录CSDN[应用篇]