L家tag題目,這種easy在面試的時候面試官肯定是expect你給出最優(yōu)解的。這道題之前我一直用的O(n)的方法,可能是給的例子都是很小的數(shù)據(jù)量給我造成了錯覺覺得O(n)就是最優(yōu)了,然而這是一道最基本的binary search, 肯定是希望你做到O(logn)的。
class Solution {
public char nextGreatestLetter(char[] letters, char target) {
int start = 0;
int end = letters.length - 1;
while (start + 1 < end){
int mid = start + (end - start) / 2;
if (letters[mid] <= target){
start = mid;
} else {
end = mid;
}
}
if (letters[start] > target){
return letters[start];
}
if (letters[end] > target){
return letters[end];
}
return letters[0];
}
}