Python查找数组中数值和下标相等的元素示例【二分查找】

作者:hustfc 时间:2023-11-04 12:55:45 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/weixin_36372879/article/details/84950353

标签:Python,数组,二分查找
0
投稿

猜你喜欢

  • Python类中的魔法方法之 __slots__原理解析

    2023-10-01 18:49:51
  • JavaScript实现多层颜色选项卡嵌套

    2023-09-18 04:42:28
  • mysql 错误:ERROR 1045 (28000): Access deni

    2010-09-30 14:48:00
  • 实例讲解Python3中abs()函数

    2023-06-14 02:21:55
  • Python reduce()函数的用法小结

    2022-02-27 11:28:45
  • opencv导入头文件时报错#include的解决方法

    2023-03-28 04:34:34
  • 判断触发器正在处理的是插入,删除还是更新触发

    2024-01-19 02:03:28
  • C#窗体读取EXCEL并存入SQL数据库的方法

    2024-01-17 18:16:58
  • python中pandas库中DataFrame对行和列的操作使用方法示例

    2022-07-05 03:09:00
  • MySQL(win7x64 5.7.16版本)下载、安装、配置与使用的详细图文教程

    2024-01-27 01:12:32
  • 用于统计项目中代码总行数的Python脚本分享

    2022-05-11 17:37:11
  • vue中element-ui表格缩略图悬浮放大功能的实例代码

    2024-05-29 22:44:31
  • Java使用正则表达式验证手机号和电话号码的方法

    2023-11-20 08:07:12
  • Python pandas之多级索引取值详解

    2022-05-09 14:12:31
  • 什么是Semantics?

    2008-04-16 13:45:00
  • SQL Server 压缩日志及数据库文件大小

    2009-05-13 10:29:00
  • js滑动展开与折叠效果(收缩)

    2007-10-09 13:17:00
  • ORACLE 10g 安装教程[图文]

    2023-07-15 07:07:27
  • JSP + Servlet实现生成登录验证码示例

    2023-06-27 02:47:59
  • 基于Python闭包及其作用域详解

    2023-11-07 07:22:02
  • asp之家 网络编程 m.aspxhome.com