leetcode 二分查找·系统掌握 寻找比目标字母大的最小字母

题目:

给你一个字符数组 letters,该数组按非递减顺序 排序,以及一个字符 targetletters至少有两个不同的字符。

返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。

题解:

本题就是非常经典的泛型二分~01~查找模型,但是需要注意,这样查找出来的可能是预期答案,第一个1,也可能是最后一个0(当查找范围全是0时),所以需要对结果特判一下。

cpp 复制代码
char nextGreatestLetter(vector<char>& letters, char target) {
        int l=0,r=letters.size()-1;
        while(l<r){
            int mid=(l+r)>>1;
            if(letters[mid]>target)r=mid;
            else l=mid+1;
        }
        if(letters[l]>target)return letters[l];
        else return letters[0];
    }
相关推荐
一条大祥脚4 分钟前
Codeforces Round 1072 (Div. 3) 树形背包|线段树二分|区间并查集维护区间合并/set维护区间分裂
算法·深度优先·图论
Xの哲學15 分钟前
Linux SKB: 深入解析网络包的灵魂
linux·服务器·网络·算法·边缘计算
无限进步_19 分钟前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio
CodeByV22 分钟前
【算法题】哈希
算法·哈希算法
独自破碎E25 分钟前
【层序遍历】序列化二叉树
leetcode
天赐学c语言28 分钟前
1.14 - 用栈实现队列 && 对模板的理解以及模板和虚函数区别
c++·算法·leecode
高洁0129 分钟前
AI智能体搭建(3)
人工智能·深度学习·算法·数据挖掘·知识图谱
不知名XL1 小时前
day24 贪心算法 part02
算法·贪心算法
AI科技星1 小时前
时空几何:张祥前统一场论20核心公式深度总结
人工智能·线性代数·算法·机器学习·生活
菜鸟233号1 小时前
力扣518 零钱兑换II java实现
java·数据结构·算法·leetcode·动态规划