当前位置: 首页 > 编程笔记 >

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

公冶兴文
2023-03-14
本文向大家介绍Python查找数组中数值和下标相等的元素示例【二分查找】,包括了Python查找数组中数值和下标相等的元素示例【二分查找】的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

 类似资料:
  • 问题内容: 我有一个多维数组,我想获取围绕该数组中特定元素的元素。 例如,如果我有以下内容: 如何找到以上任何一个元素中的所有8个元素?以及如何处理边缘的元素? 我发现的一种方法是为此编写9行代码,这很明显,但是有更好的解决方案吗? 问题答案: for (i = 0; i < array.length; i ) { for (j = 0; j < array[i].length; j ) { fo

  • 我们将如何测试数组中每个子数组的长度等于子数组元素之和的P倍的所有子数组组合。 一个简短的示例:编辑: 期望的结果: 长度=2,P*元素之和=1。子序列是 编辑约束: 这些问题属于什么样的问题集(例如:NP-hard?)?语言:C#

  • 问题内容: 快速找到整数数组总和的最简单(最佳)方法是什么?我有一个称为倍数的数组,我想知道倍数的总和。 问题答案: 这是我能找到的最简单/最短的方法。 Swift 3和Swift 4: 斯威夫特2: 更多信息: 这使用了Array的reduce方法(在此处提供文档),该方法允许您“通过递归应用所提供的闭包将元素的集合减少到单个值”。我们给它0作为初始值,然后本质上给闭包赋值。当然,我们可以将其简

  • 在swift中查找整数数组和的最简单(最好)方法是什么?我有一个叫做multiples的数组,我想知道multiples的和。

  • 本文向大家介绍C++二维数组中的查找算法示例,包括了C++二维数组中的查找算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++二维数组中的查找算法。分享给大家供大家参考,具体如下: 一、问题: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二、实现代码: 希望