题目:给定一个只包含小写字母的有序数组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];
}
}