当前位置: 首页 > news >正文

LeetCode 744.寻找比目标字母大的最小字母:遍历或二分

【LetMeFly】744.寻找比目标字母大的最小字母:遍历或二分

力扣题目链接:https://leetcode.cn/problems/find-smallest-letter-greater-than-target/

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

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

示例 1:

输入:letters = ['c', 'f', 'j'],target = 'a'输出:'c'解释:letters 中字典上比 'a' 大的最小字符是 'c'。

示例 2:

输入:letters = ['c','f','j'], target = 'c'输出:'f'解释:letters 中字典顺序上大于 'c' 的最小字符是 'f'。

示例 3:

输入:letters = ['x','x','y','y'], target = 'z'输出:'x'解释:letters 中没有一个字符在字典上大于 'z',所以我们返回 letters[0]。

提示:

  • 2 <= letters.length <= 104
  • letters[i]是一个小写字母
  • letters非递减顺序排序
  • letters最少包含两个不同的字母
  • target是一个小写字母

解题方法:二分或遍历

二分:二分查找第一个大于target的元素位置即可(upper_bound

遍历:从头到尾遍历就好。

  • 时间复杂度:二分O ( l o g n ) O(log n)O(logn)遍历O ( n ) O(n)O(n)
  • 空间复杂度:O ( 1 ) O(1)O(1)

AC代码

C++和Python用的二分(因为调库很方便),Go、Java和Rust使用的遍历。

C++
/* * @LastEditTime: 2026-01-31 13:50:40 */classSolution{public:charnextGreatestLetter(vector<char>&letters,chartarget){vector<char>::iterator it=upper_bound(letters.begin(),letters.end(),target);returnit==letters.end()?letters[0]:*it;}};
Python
''' LastEditTime: 2026-01-31 13:56:59 '''fromtypingimportListfrombisectimportbisect_rightclassSolution:defnextGreatestLetter(self,letters:List[str],target:str)->str:idx=bisect_right(letters,target)returnletters[0]ifidx==len(letters)elseletters[idx]
Java
/* * @LastEditTime: 2026-01-31 14:01:16 */classSolution{publiccharnextGreatestLetter(char[]letters,chartarget){for(inti=0;i<letters.length;i++){if(letters[i]>target){returnletters[i];}}returnletters[0];}}
Go
/* * @LastEditTime: 2026-01-31 13:59:57 */packagemainfuncnextGreatestLetter(letters[]byte,targetbyte)byte{for_,c:=rangeletters{ifc>target{returnc}}returnletters[0]}
Rust
/* * @LastEditTime: 2026-01-31 14:03:50 */implSolution{pubfnnext_greatest_letter(letters:Vec<char>,target:char)->char{foriin0..letters.len(){ifletters[i]>target{returnletters[i];}}letters[0]}}
  • 执行用时分布0ms击败100.00%
  • 消耗内存分布2.72MB击败97.14%

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.jsqmd.com/news/326113/

相关文章:

  • 毕设神器,当Java初学者遇到飞算,仿佛直接打通了任督二脉
  • 充电桩品牌哪个更可靠?2026年充电桩推荐与评测,直击安全隐忧与网络覆盖痛点
  • 一篇讲透DNS劫持:从攻击链条到全面防御
  • 【开题答辩全过程】以 基于web技术的酒店信息管理系统设计与实现-为例,包含答辩的问题和答案
  • 2026年木里木外权威分析:智能高定如何重塑高端家居价值体系
  • ubuntu24.04制作离线本地APT源 - 指南
  • 充电桩品牌哪个好?2026年充电桩品牌推荐与排名,聚焦智能化与生态集成能力
  • 基于51单片机的智能锁设计
  • 有实力的旧房改造企业哪家靠谱,兴隆家具符合要求吗?
  • 充电桩品牌哪个好?2026年充电桩品牌推荐与排名,解决品质与智能核心痛点
  • 2026年上门按摩平台权威盘点与推荐:五大平台综合解析
  • 基于51单片机的智能门锁
  • 怒江州英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜
  • 2026年上门按摩平台权威盘点与推荐:五大平台深度解析
  • 2026年上门按摩平台权威盘点与推荐:五大服务商深度解析
  • Elasticsearch从零启动指南:安装、配置、启停与排坑全解析
  • Claude Code需求分析
  • 【网站推荐】Indie Hacker 出海日本第一步:注册 Hatena 账号 - AI
  • 计算机等级考试(三级Linux技术)--- 真题5
  • 如何为不同场景选全屋定制?2026年全屋定制品牌全面评测与推荐,直击品质与工期痛点
  • 【开题答辩全过程】以 基于安卓的普法教育App设计与实现为例,包含答辩的问题和答案
  • 2026年上门按摩平台权威解析与推荐盘点:五大服务商深度评估
  • 2026年全屋定制品牌推荐:智能家居趋势评测,涵盖别墅与平层场景定制痛点
  • 【保姆级教程】宝塔面板安装与初始化配置全攻略(2026版)
  • 方盾说说煤矿工口罩使用科学建议
  • Libreoffice使用技巧
  • 2026年全屋定制品牌推荐:基于多场景实测评价,针对空间利用与交付痛点精准指南
  • 零基础小白入门挖漏洞:漏洞扫描工具大全,覆盖 Web / 手游 / 系统,新手入门必备!
  • DNS劫持全解析:从原理到防护,一篇讲透
  • 8年质保/IPS屏显/积木风扇,旗舰标杆,超频三银翼DT360水冷评测