本身這個題挺簡單的,但是如果增加這樣一個要求怎么寫:如果序列中有多個等于目標(biāo)的數(shù),則可以傳入一個flag參數(shù),來決定返回等于目標(biāo)的數(shù)最大下標(biāo)還是最小下標(biāo)舉個例子:binsearch([1,3,3],3,"max")返回2binsearch([1,3,3],3,"min")返回1binsearch([1,1],2,"max")和binsearch([1,1],2,"min")都返回1就是只有當(dāng)數(shù)列中有多個等于目標(biāo)的數(shù)時flag參數(shù)才有意義。我寫的只考慮flag=="min"的代碼,我覺得最后幾行if已經(jīng)很不優(yōu)雅了,flag=="max"怎么也寫不對defbinsearch(a,target,flag="min"):'''Findtheindexofthemaxonenotgreaterthantarget'''l,r=0,len(a)-1while(l=target:r=midelse:l=mid+1ifa[l]==target:returnlifa[r]==target:returnrifa[r]
從有序序列中求最大 不大于目標(biāo) 的數(shù)的下標(biāo)的二分查找怎么寫比較優(yōu)雅?
幕布斯6054654
2019-04-19 16:13:09