本身這個題挺簡單的,但是如果增加這樣一個要求怎么寫:如果序列中有多個等于目標的數,則可以傳入一個flag參數,來決定返回等于目標的數最大下標還是最小下標舉個例子:binsearch([1,3,3],3,"max")返回2binsearch([1,3,3],3,"min")返回1binsearch([1,1],2,"max")和binsearch([1,1],2,"min")都返回1就是只有當數列中有多個等于目標的數時flag參數才有意義。我寫的只考慮flag=="min"的代碼,我覺得最后幾行if已經很不優雅了,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]
從有序序列中求最大 不大于目標 的數的下標的二分查找怎么寫比較優雅?
幕布斯6054654
2019-04-19 16:13:09