每次思考都是一次进步
1、由于要求的是比把目标字母大的字母的最小字母,那么可以用二分做,二分最后的l要么指向最后一位字母,要么指向大于目标字母的最小字母。结束循环后要先判断l是否为指向最后一位字母且该字母并不大于目标字母,那么根据题目意思,则返回数组的首字母,否则则返回l所指向的字母
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int thesize=letters.size();
int l=0,r=thesize-1,mid;
while(l<r)
{
mid=l+(r-l)/2;
if(letters[mid]>target) r=mid;
else l=mid+1;
}
if(l==thesize-1&&letters[l]<=target) return letters[0];
else return letters[l];
}
};