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深入学习之闭包
Aug 31 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
Python进程间通信之共享内存详解
Oct 30 Python
Python中安装easy_install的方法
Nov 18 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python paramiko使用方法代码汇总
Nov 20 Python
Python命令行参数argv和argparse该如何使用
Feb 08 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
python2 对excel表格操作完整示例
2020/02/23 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
如何用python 操作zookeeper
2020/12/28 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
Ruby如何定义一个类
2012/10/08 面试题
销售顾问的岗位职责
2013/11/13 职场文书
大学生入党思想汇报
2014/01/14 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
青年标兵事迹材料
2014/08/16 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
一文解答什么是MySQL的回表
2022/08/05 MySQL