news 2026/4/18 7:00:48

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:38:31

【开题答辩全过程】以 基于web技术的酒店信息管理系统设计与实现-为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/18 3:36:04

护网行动实战复盘:红蓝对抗核心技巧与落地指南

护网行动实战复盘&#xff1a;红蓝对抗核心技巧与落地指南 护网行动作为网络安全领域最贴近真实攻击场景的攻防演练&#xff0c;是检验企业安全防护体系、锤炼安全团队实战能力的“试金石”。无论是红队的渗透突破&#xff0c;还是蓝队的防御处置&#xff0c;都需要依托系统的…

作者头像 李华
网站建设 2026/4/17 14:43:23

专业写作AI论文软件推荐

在学术创作日益数字化的今天&#xff0c;AI论文写作软件已成为科研人员、学生提升写作效率、优化论文质量的核心工具。优质的AI论文软件不仅能覆盖选题、写作、校对、查重全流程&#xff0c;更能兼顾学术合规性与格式规范性&#xff0c;其中PaperRed凭借全流程学术辅助、严格合…

作者头像 李华
网站建设 2026/4/18 3:33:06

计算机毕业设计springboot医院药品进销存管理系统 基于SpringBoot的医院药房全流程库存与销售系统 SpringBoot驱动的医院药品采购-仓储-销售一体化平台

计算机毕业设计springboot医院药品进销存管理系统60s649 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 在“互联网医疗”快速渗透的当下&#xff0c;药品流转效率直接影响医院…

作者头像 李华
网站建设 2026/4/18 3:31:02

计算机毕业设计springboot自助医疗服务系统 基于SpringBoot的智慧医疗健康管理平台设计与实现 Java驱动的数字化在线诊疗与药事服务系统构建

计算机毕业设计springboot自助医疗服务系统m5103fx3&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着人口老龄化程度加深及慢性病患者群体扩大&#xff0c;传统医疗模式在资源…

作者头像 李华
网站建设 2026/4/18 0:01:24

计算机毕业设计springboot垃圾分类管理系统 基于SpringBoot框架的智慧垃圾回收分类平台设计与实现 Java Web驱动的社区生活垃圾分类监管系统开发

计算机毕业设计springboot垃圾分类管理系统018e7aos &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着城市化进程的不断加快和人口规模的持续增长&#xff0c;垃圾处理已成为…

作者头像 李华