題目:給定一個只包含小寫字母的有序數組letters 和一個目標字母 target,尋找有序數組裏面比目標字母大的最小字母。
數組裏字母的順序是循環的。舉個例子,如果目標字母target = ‘z’ 並且有序數組爲 letters = [‘a’, ‘b’],則答案返回 ‘a’。
//用二分法查找,效率極高,1ms ,擊敗了99.67%用戶.
class Solution {
public char nextGreatestLetter(char[] arr, char key) {
int low=0;
int high = arr.length-1;
int mid ;
if(key >=arr[high]){
return arr[0];
}
while(low<=high){
mid = low+(high-low)/2;
if(arr[mid]<=key){
low = mid+1;
}else{
high = mid-1;
}
}
return arr[low];
}
}