Python查找数组中数值和下标相等的元素示例【二分查找】


Posted in Python onFebruary 13, 2019

本文实例讲述了Python查找数组中数值和下标相等的元素。分享给大家供大家参考,具体如下:

题目描述:

假设一个单调递增的数组中的每个元素都是整数并且是唯一的。请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如在数组【-3,-1,1,3,5】中,3和他的下标相等。

采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于等于-1,因此左边的不可能等于下标。如果数组中的数字大于下标,同理,之后的数字肯定都大于下标,往左边查找。

算法示例:

# -*- coding:utf-8 -*-
#! python3
class Solution:
  def numberEqualSubscript(self, numbers):
    if numbers == []:
      return -1
    left = 0
    right = len(numbers) - 1
    while(left <= right):
      middle = (left + right) >> 1
      if numbers[middle] == middle:
        return middle
      elif numbers[middle] < middle:
        left = middle + 1
      else:
        right = middle - 1
    return -1
numbers = [-3,-1,1,3,5]
print(Solution().numberEqualSubscript(numbers))

运行结果:

3

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
深入理解Python 代码优化详解
Oct 27 Python
Python字符串格式化
Jun 15 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
三步实现Django Paginator分页的方法
Jun 11 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
Python实现七个基本算法的实例代码
Oct 08 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
用Python提取PDF表格的方法
Apr 11 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 #Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 #Python
Python实现Event回调机制的方法
Feb 13 #Python
Python socket实现多对多全双工通信的方法
Feb 13 #Python
对python文件读写的缓冲行为详解
Feb 13 #Python
python单线程文件传输的实例(C/S)
Feb 13 #Python
Python 实现文件打包、上传与校验的方法
Feb 13 #Python
You might like
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
JS的反射问题
2010/04/07 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
javascript实现日历效果
2019/06/17 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
基于Python os模块常用命令介绍
2017/11/03 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
浅谈Python的list中的选取范围
2018/11/12 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Python中itertools的用法详解
2020/02/07 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
平面设计师工作职责范文
2013/12/03 职场文书
学校交通安全责任书
2014/08/25 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
晚会开幕词
2015/01/28 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers