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)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python常用數(shù)據(jù)類(lèi)型之列表使用詳解
列表是Python中的基礎(chǔ)數(shù)據(jù)類(lèi)型之一,其他語(yǔ)言中也有類(lèi)似于列表的數(shù)據(jù)類(lèi)型,比如js中叫數(shù)組,他是以[ ]括起來(lái),每個(gè)元素以逗號(hào)隔開(kāi),而且他里面可以存放各種數(shù)據(jù)類(lèi)型。本文將通過(guò)示例詳細(xì)講解列表的使用,需要的可以參考一下2022-04-04Python基于百度AI實(shí)現(xiàn)OCR文字識(shí)別
這篇文章主要介紹了Python基于百度AI實(shí)現(xiàn)OCR文字識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04python 使用pdfminer3k 讀取PDF文檔的例子
今天小編就為大家分享一篇python 使用pdfminer3k 讀取PDF文檔的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08使用python在校內(nèi)發(fā)人人網(wǎng)狀態(tài)(人人網(wǎng)看狀態(tài))
人人網(wǎng)怎么發(fā)狀態(tài)?下面使用python實(shí)現(xiàn)這個(gè)功能,大家參考使用吧2014-02-02Python如何生成exe文件?用Pycharm一步步帶你學(xué)(超詳細(xì)、超貼心)
這篇文章主要給大家介紹了關(guān)于Python如何生成exe文件的相關(guān)資料,本文利用Pycharm一步步帶你學(xué),文中通過(guò)圖文以及實(shí)例代碼介紹的超詳細(xì)、超貼心,需要的朋友可以參考下2022-02-02詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes
這篇文章主要介紹了詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05Python 同級(jí)目錄(兄弟目錄)調(diào)用方式
這篇文章主要介紹了Python 同級(jí)目錄(兄弟目錄)調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Python?中將數(shù)字轉(zhuǎn)換為字母的方法
本文詳細(xì)介紹了在 Python 中將數(shù)字轉(zhuǎn)換為字母的幾種常用方法,我們介紹了使用 chr() 函數(shù)、string 模塊和 ord() 函數(shù)等方法,并提供了示例代碼幫助你理解和應(yīng)用這些方法,感興趣的朋友跟隨小編一起看看吧2023-06-06對(duì)于Python中線(xiàn)程問(wèn)題的簡(jiǎn)單講解
這篇文章主要介紹了對(duì)于Python中線(xiàn)程問(wèn)題的簡(jiǎn)單講解,線(xiàn)程一直是Python編程當(dāng)中的熱點(diǎn)問(wèn)題,而本文沒(méi)有涉及GIL線(xiàn)程鎖方面的內(nèi)容,需要的朋友可以參考下2015-04-04解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問(wèn)題
這篇文章主要介紹了解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04