二分查找,没有找到元素则循环,循环一定是第一个最小,故用它初始化。
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
target++;
int l = 0, r = letters.size() - 1;
char ans = letters[0];
while (l <= r) {
int mid = (l + r) >> 1;
if (letters[mid] == target)
{
ans = target;
break;
}
else if (letters[mid] < target)
l = mid + 1;
else
{
ans = letters[mid];
r = mid - 1;
}
}
return ans;
}
};