Python查找數(shù)組中數(shù)值和下標(biāo)相等的元素示例【二分查找】
本文實例講述了Python查找數(shù)組中數(shù)值和下標(biāo)相等的元素。分享給大家供大家參考,具體如下:
題目描述:
假設(shè)一個單調(diào)遞增的數(shù)組中的每個元素都是整數(shù)并且是唯一的。請編程實現(xiàn)一個函數(shù),找出數(shù)組中任意一個數(shù)值等于其下標(biāo)的元素,例如在數(shù)組【-3,-1,1,3,5】中,3和他的下標(biāo)相等。
采用二分查找:如果數(shù)組中的數(shù)字小于下標(biāo),由于下標(biāo)是-1的遞減數(shù)列,但是數(shù)組中的元素差值大于等于-1,因此左邊的不可能等于下標(biāo)。如果數(shù)組中的數(shù)字大于下標(biāo),同理,之后的數(shù)字肯定都大于下標(biāo),往左邊查找。
算法示例:
# -*- 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))
運行結(jié)果:
3
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python3實現(xiàn)SMTP發(fā)送郵件詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了python3實現(xiàn)SMTP發(fā)送郵件的詳細(xì)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Python通過TensorFlow卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)貓狗識別
今天小編就為大家分享一篇關(guān)于Python通過TensorFlow卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)貓狗識別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
python使用numpy按一定格式讀取bin文件的實現(xiàn)
這篇文章主要介紹了python使用numpy按一定格式讀取bin文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
基于python獲取本地時間并轉(zhuǎn)換時間戳和日期格式
這篇文章主要介紹了基于python獲取本地時間并轉(zhuǎn)換時間戳和日期格式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Python使用cProfile分析和定位應(yīng)用性能瓶頸點
cProfile?是?Python?標(biāo)準(zhǔn)庫中的一個模塊,用于對?Python?程序進(jìn)行性能分析,它能輸出每個函數(shù)的調(diào)用次數(shù)、執(zhí)行耗時等詳細(xì)信息,下面我們來看看如何使用cProfile分析和定位應(yīng)用性能瓶頸點吧2024-12-12
Django model.py表單設(shè)置默認(rèn)值允許為空的操作
這篇文章主要介紹了Django model.py表單設(shè)置默認(rèn)值允許為空的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
pycharm打包python項目為exe執(zhí)行文件的實例代碼
這篇文章主要介紹了pycharm打包python項目為exe執(zhí)行文件,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07

