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批量提取PDF文件中文本的脚本
Mar 14 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
python跳出双层for循环的解决方法
Jun 24 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
keras中的卷积层&amp;池化层的用法
May 22 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python如何发送与接收大型数组
Aug 07 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 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
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
js查错流程归纳
2012/05/04 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
js对象基础实例分析
2015/01/13 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
Python 异常处理实例详解
2014/03/12 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
python 调用有道api接口的方法
2019/01/03 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
python实现超级马里奥
2020/03/18 Python
python 简单的调用有道翻译
2020/11/25 Python
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
新员工欢迎词
2014/01/12 职场文书
财政专业求职信范文
2014/02/19 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
应届毕业生自荐书
2014/06/18 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书