自用筆記25 二分法

2021-10-09 13:34:06 字數 1286 閱讀 8062

給你乙個排序後的字元列表 letters ,列表中只包含小寫英文本母。另給出乙個目標字母 target,請你尋找在這一有序列表裡比目標字母大的最小字母。

在比較時,字母是依序迴圈出現的。舉個例子:

如果目標字母 target = 『z』 並且字元列表為 letters = [『a』, 『b』],則答案返回 『a』

示例:輸入:

letters = [「c」, 「f」, 「j」]

target = 「a」

輸出: 「c」

輸入:letters = [「c」, 「f」, 「j」]

target = 「c」

輸出: 「f」

輸入:letters = [「c」, 「f」, 「j」]

target = 「d」

輸出: 「f」

輸入:letters = [「c」, 「f」, 「j」]

target = 「g」

輸出: 「j」

輸入:letters = [「c」, 「f」, 「j」]

target = 「j」

輸出: 「c」

輸入:letters = [「c」, 「f」, 「j」]

target = 「k」

輸出: 「c」

letters長度範圍在[2, 10000]區間內。

letters 僅由小寫字母組成,最少包含兩個不同的字母。

目標字母target 是乙個小寫字母。

char

nextgreatestletter

(char

* letters,

int letterssize,

char target)

return letters[0]

;}

這是直接演算法,題目給的字母陣列已經是排列好的,所以只需要比較大小。

如果用二分法查詢,先設定乙個中間值mid,將target和中間值比較,如果target比mid大,則將左埠設定成mid+1,如果target比mid小,則把右埠設為mid

char

nextgreatestletter

(char

* letters,

int letterssize,

char target)

else

if(letters[mid]

<= target)}if

(letters[right]

<= target)

return letters[right]

;}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

學習筆記 二分法

問題引入 給定乙個按照公升序排列的長度為n的整數陣列,詢問元素k,返回k在陣列中的起始位置和終止位置。如果陣列中不存在該元素,則返回 1 1 例如 6 3 1 2 2 3 3 4 則應返回4 5 二分最重要的一步是區間劃分,即確定左區間表示什麼,右區間表示什麼,然後確定是輸出l還是r 對於本題,求起...