寻找比目标字母大的最小字母
Find Smallest Letter Greater Than Target
解
方法一:暴力法
因为是升序,所以一遍遍历就可
char nextGreatestLetter(char *letters, int lettersSize, char target)
{
if(letters[lettersSize-1] <= target){
return letters[0];
}
for (int i = 0; i < lettersSize; i++){
if(letters[i] > target){
return letters[i];
}
}
return letters[0];
}
结果
方法二:Binary Search
char nextGreatestLetter(char *letters, int lettersSize, char target)
{
if(letters[lettersSize-1] <= target || letters[0] > target){ //两种特殊情况
return letters[0];
}
int left = 0, right = lettersSize - 1;
int mid;
while(left < right){
mid = left + (right - left) / 2;
if(letters[mid] > target){
right = mid;
}else{
left = mid + 1;
}
}
return letters[left % lettersSize];
}
结果
可能是样例太少,O(n)和O(logn)差距不大…