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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
解决python爬虫中有中文的url问题
May 11 Python
详解django2中关于时间处理策略
Mar 06 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
Python networkx包的实现
Feb 14 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
python轮询机制控制led实例
May 03 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 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计数器的实现代码
2013/06/08 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
python检测是文件还是目录的方法
2015/07/03 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
利用python求相邻数的方法示例
2017/08/18 Python
python中import reload __import__的区别详解
2017/10/16 Python
Django开发中的日志输出的方法
2018/07/02 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
pandas如何处理缺失值
2019/07/31 Python
python 6种方法实现单例模式
2020/12/15 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
中秋节超市促销方案
2014/01/30 职场文书
土地转让协议书范本
2014/04/15 职场文书
经典禁毒标语
2014/06/16 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书