二分查找,没有找到元素则循环,循环一定是第一个最小,故用它初始化。
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;
}
};
本文介绍了如何使用二分查找法在字符数组中找到大于目标值的第一个元素,并通过优化循环初始化策略来提高效率。重点在于理解循环条件和目标值更新的方法。
271

被折叠的 条评论
为什么被折叠?



