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开发vim插件及心得分享
Nov 04 Python
使用python为mysql实现restful接口
Jan 05 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
Django的CVB实例详解
Feb 10 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python实现打包成库供别的模块调用
Jul 13 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 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实现分页的一个示例
2006/10/09 PHP
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python中的面向对象编程详解(上)
2015/04/13 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python自动创建Excel并获取内容
2020/09/16 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
推荐信格式范文
2014/05/09 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
家长通知书家长意见
2014/12/30 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技