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功能键的读取方法
May 28 Python
python冒泡排序简单实现方法
Jul 09 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
用python做游戏的细节详解
Jun 25 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
Django如何实现上传图片功能
Aug 16 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
python/golang实现循环链表的示例代码
Sep 14 Python
分享一个python的aes加密代码
Dec 22 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
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
对Python 语音识别框架详解
2018/12/24 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
土木工程专业大学毕业生求职信
2013/10/13 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
聚美优品广告词改编
2014/03/14 职场文书
信息工作经验交流材料
2014/05/28 职场文书
保密工作承诺书
2014/08/29 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
快速学习Oracle触发器和游标
2021/06/30 Oracle
python之django路由和视图案例教程
2021/07/26 Python