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中的闭包详细介绍和实例
Nov 21 Python
python获取android设备的GPS信息脚本分享
Mar 06 Python
python比较两个列表是否相等的方法
Jul 28 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
python WindowsError的错误代码详解
Jul 23 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
关于python多重赋值的小问题
Apr 17 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
opencv检测动态物体的实现
Jul 21 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
php2html php生成静态页函数
2008/12/08 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
vue的for循环使用方法
2019/02/12 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
回顾Javascript React基础
2019/06/15 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
Python脚本实现格式化css文件
2015/04/08 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
Python气泡提示与标签的实现
2020/04/01 Python
python将数据插入数据库的代码分享
2020/08/16 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
工商管理本科毕业生求职信范文
2013/10/05 职场文书
环保倡议书格式范文
2014/05/14 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
使用python绘制横竖条形图
2022/04/21 Python