給你乙個排序後的字元列表 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 對於本題,求起...