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 IDLE加上自动补全和历史功能
Nov 30 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
flask框架中勾子函数的使用详解
Aug 01 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
Python3 集合set入门基础
Feb 10 Python
利用python绘制数据曲线图的实现
Apr 09 Python
Jupyter加载文件的实现方法
Apr 14 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
mysql 字段类型说明
2007/04/27 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP代码加密的方法总结
2020/03/13 PHP
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python制作一个桌面便签软件
2015/08/09 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python之文字转图片方法
2018/05/10 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
Python如何解除一个装饰器
2020/08/07 Python
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
办公室前台的岗位职责
2013/12/20 职场文书
初中音乐教学反思
2014/01/12 职场文书
教师职称自我鉴定
2014/02/12 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
民间个人借款协议书
2014/09/30 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书