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的设计模式编程
Mar 01 Python
Python求解任意闭区间的所有素数
Jun 10 Python
python中的字符串内部换行方法
Jul 19 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
使用keras根据层名称来初始化网络
May 21 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python实现Kmeans聚类算法
2020/06/10 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
总结30个CSS3选择器
2017/04/13 HTML / CSS
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
Java程序员综合测试题
2014/04/25 面试题
大学生就业自荐信
2013/10/26 职场文书
八年级生物教学反思
2014/01/22 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
小学假期安全广播稿
2014/09/28 职场文书
锦旗赠语
2015/06/23 职场文书
mysql序号rownum行号实现方式
2022/12/24 MySQL