Python查找數(shù)組中數(shù)值和下標(biāo)相等的元素示例【二分查找】
本文實(shí)例講述了Python查找數(shù)組中數(shù)值和下標(biāo)相等的元素。分享給大家供大家參考,具體如下:
題目描述:
假設(shè)一個(gè)單調(diào)遞增的數(shù)組中的每個(gè)元素都是整數(shù)并且是唯一的。請(qǐng)編程實(shí)現(xiàn)一個(gè)函數(shù),找出數(shù)組中任意一個(gè)數(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))
運(yùn)行結(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)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python3實(shí)現(xiàn)SMTP發(fā)送郵件詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)SMTP發(fā)送郵件的詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Python通過(guò)TensorFlow卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)貓狗識(shí)別
今天小編就為大家分享一篇關(guān)于Python通過(guò)TensorFlow卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)貓狗識(shí)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
python使用numpy按一定格式讀取bin文件的實(shí)現(xiàn)
這篇文章主要介紹了python使用numpy按一定格式讀取bin文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
python實(shí)現(xiàn)圖像隨機(jī)裁剪的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)圖像隨機(jī)裁剪的示例代碼,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下2020-12-12
基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式
這篇文章主要介紹了基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Python使用cProfile分析和定位應(yīng)用性能瓶頸點(diǎn)
cProfile?是?Python?標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于對(duì)?Python?程序進(jìn)行性能分析,它能輸出每個(gè)函數(shù)的調(diào)用次數(shù)、執(zhí)行耗時(shí)等詳細(xì)信息,下面我們來(lái)看看如何使用cProfile分析和定位應(yīng)用性能瓶頸點(diǎn)吧2024-12-12
Django model.py表單設(shè)置默認(rèn)值允許為空的操作
這篇文章主要介紹了Django model.py表單設(shè)置默認(rèn)值允許為空的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
在Django中實(shí)現(xiàn)定時(shí)任務(wù)的多種方法
在 Django 項(xiàng)目中實(shí)現(xiàn)定時(shí)任務(wù)可以幫助自動(dòng)化執(zhí)行一些后臺(tái)任務(wù),如數(shù)據(jù)清理、定期報(bào)告生成等,以下是幾種常見的實(shí)現(xiàn)方式,每種方法都有其獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-08-08
pycharm打包python項(xiàng)目為exe執(zhí)行文件的實(shí)例代碼
這篇文章主要介紹了pycharm打包python項(xiàng)目為exe執(zhí)行文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07

