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];
    }
相关推荐
不知名的忻15 小时前
Dijkstra算法(朴素版&堆优化版)
java·数据结构·算法··dijkstra算法
星星码️15 小时前
LeetCode刷题简单篇之反转字母
c++·算法·leetcode
naturerun15 小时前
螺旋形遍历奇数阶矩阵
c++·算法·矩阵
hqyjzsb16 小时前
跨行业求职最快的加分方式:带一个AI时代人人都缺的能力去面试
人工智能·面试·职场和发展·aigc·人机交互·产品经理·学习方法
wuweijianlove16 小时前
算法复杂度的实验估算与误差分布建模的技术7
算法
佳xuan16 小时前
简而言之c++
c++·算法
O&REO17 小时前
哈工大网安 / 信安 837 考研复试机试&面试重点 + 资料汇总
考研·面试·职场和发展
变量未定义~17 小时前
星际争霸、宝石塔的亮度差异、寻找食物储量
算法
YL2004042617 小时前
027合并两个有序链表
java·数据结构·算法·链表
June bug17 小时前
【雅思】口语概述和答题思路
职场和发展·学习方法