Python算法二分查找之重复元素列表
描述:
请实现有重复数字的升序数组的二分查找
给定一个 元素有序的(升序)长度为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算法二分查找之重复元素列表相关推荐
- python实现二分查找(折半查找)算法
python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...
- 七十六、Python | Leetcode二分查找和分治算法系列
@Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- python函数教程:Python递归函数 二分查找算法实现解析
这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...
- Python实现二分查找算法,图片结合代码讲解,简单易懂
Python实现二分查找算法,图片结合代码讲解,简单易懂 二分查找是指在一个数组中循环找到特定的目标元素的一种算法,二分查找算法要求这个数组必须是有序的,如果不是有序则最后得出的结果是不准确的,因为其 ...
- python二分查找算法_如何使用python的二分查找算法
如何使用python的二分查找算法 发布时间:2020-11-18 09:27:29
- python中二分查找什么意思_python中二分查找法的实现方法
如果想要在有序数据中进行查找想要的数据,二分查找法就个好方法,它可以大大缩短了搜索时间,是一种常见的查找方法.二分查找很好写,却很难写对,下面,小编就简单向大家介绍一下二分查找,并演示器使用代码. 1 ...
- java 二分查找_计算机入门必备算法——二分查找法
1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...
- 数据结构与算法——二分查找与二叉查找树汇总整理
目录 预备知识:二分查找基础知识 例1:插入位置(easy) (二分查找) 例2:区间查找(medium)(二分查找) 例3:旋转数组查找(medium)(二分查找) 预备知识:二叉查找(排序)树基础 ...
- python实现二分查找(对新手友好,内容通俗易懂)
python实现二分查找 二分查找又名折半查找. 优点:查询速度快,性能好. 缺点:要求查询的表为有序表 原理:将表中间位置(mid)的数字与待查数字(data)做比较, 如果相等:返回true,结束 ...
最新文章
- PHP编实现程动态图像的创建
- OpenCV iOS-图像处理
- vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...
- 阿里云服务器如何创建快照备份数据
- mysql连接规定时区以及编码_springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决...
- ssl协议,openssl,创建私有CA
- android sdk无法启动不了,无法启动Android SDK管理器
- 计算机主机结构讲解,电脑内部结构图和讲解
- 修改CentOS默认yum源地址提高下载速度
- springboot整合jwt_springboot整合jwt实现身份验证
- TC TT运行状态监控
- 计算广告-商业化体系
- la java va bien口琴谱_口琴曲简谱
- 原来路由器也属于消耗品
- 数据库数据的备份和还原
- 深圳计算机中级职称入户,深圳积分入户中级职称积分,这些证书助你轻松入户!...
- cmd命令让计算机崩溃,十大危险的cmd指令,谨慎使用
- ChatGPT全栈开发实战:从需求分析到数据可视化,一站式指南助你快速构建全面应用
- 异步传输中的批量发送问题
- 计算机专业英语名词解释
热门文章
- [MAUI]模仿网易云音乐黑胶唱片的交互实现
- python 抓包解析数据_Python抓包并解析json爬虫的完整实例代码
- ubuntu中的安装的docker环境重启php环境
- 史上最全的spark面试题——持续更新中
- java积累----ISO8601格式时间转化为Datetime类型
- 应用宝苹果版_点赞应用ios版下载-点赞应用苹果版下载v1.1
- 榆熙电商:提升店铺星级的技巧都有哪些?
- 高等数学学习笔记——第十四讲——函数极限的概念(1. 函数在无穷远处极限定义)
- JavaScript基础:Iterator概念及用法
- 使用python登录CSDN[应用篇]