class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int l = 0, r = letters.size() - 1;
while(l <= r )
{
int mid = l + (r -l)/2;
if(letters[mid] <= target)
l = mid + 1;
else
r = mid - 1;
}
return letters[l % letters.size()];
}
};
手动实现了upper_bound,当查询到结尾时返回第一个元素。二分查找的一个变种,这里也可以直接使用stl中的upper_bound.