本文实例讲述了Python查找数组中数值和下标相等的元素。分享给大家供大家参考,具体如下:
题目描述:
假设一个单调递增的数组中的每个元素都是整数并且是唯一的。请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如在数组【-3,-1,1,3,5】中,3和他的下标相等。
采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于等于-1,因此左边的不可能等于下标。如果数组中的数字大于下标,同理,之后的数字肯定都大于下标,往左边查找。
算法示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# -*- 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