news 2026/8/2 8:06:28

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/7/26 19:53:27

基于51单片机的门禁系统的研究与设计

基于51单片机的门禁系统的研究与设计 一、设计背景与意义 门禁系统是楼宇、办公区、小区等场景的核心安防设施&#xff0c;传统机械门禁存在易复制、安全性低、无使用记录等问题&#xff0c;而高端智能门禁系统依赖复杂的嵌入式平台与网络架构&#xff0c;成本高、部署难度大&a…

作者头像 李华
网站建设 2026/7/28 22:10:46

计算机毕业设计springboot4S店管理系统设计与实现 基于SpringBoot的汽车销售与售后服务一体化平台设计与实现

计算机毕业设计springboot4S店管理系统设计与实现gn093018 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着汽车产业的蓬勃发展和消费市场的持续升级&#xff0c;汽车4S店作…

作者头像 李华
网站建设 2026/7/26 10:01:11

Golang金融风控智能体实战:实时交易监控与欺诈检测

引言 在数字化转型浪潮中,金融科技行业面临着前所未有的安全挑战。据国际清算银行(BIS)统计,2025年全球数字支付欺诈损失超过420亿美元,同比增长23%。传统基于规则的静态风控系统已难以应对日益复杂的欺诈手段,而基于人工智能的实时风控系统成为行业刚需。 本文将深入探…

作者头像 李华
网站建设 2026/7/28 4:52:47

Java程序员进军大模型:转型指南+学习路径+高薪岗位全解析_程序员转行AI大模型教程(非常详细)

文章介绍了Java程序员转型大模型开发的完整路径&#xff0c;包括学习步骤、Java程序员的独特优势、大模型时代的价值技术岗位、AI工程师需掌握的知识体系&#xff0c;以及大模型风口的就业前景。文章提供了系统化的学习资料和路线&#xff0c;帮助Java程序员抓住AI时代机遇&…

作者头像 李华
网站建设 2026/8/1 7:01:28

从24G到8G:大模型调存优化全攻略(新手保姆级)

显存就像海绵里的水&#xff0c;只要挤一挤总还是有的。很多时候显存不够&#xff0c;不是你的显卡那太差&#xff0c;而是你还没有掌握几招“空间魔法”。今天&#xff0c;我把压箱底的大模型动力显存优化秘籍分享给&#xff0c;让你的3060也能跑出生产力&#xff01; 一、探秘…

作者头像 李华
网站建设 2026/7/29 19:16:50

PLC的润滑油灌装线自动控制系统设计

PLC的润滑油灌装线自动控制系统设计 一、设计背景与意义 润滑油灌装是石化行业的核心工序&#xff0c;传统灌装线依赖人工操作或简易继电器控制&#xff0c;存在灌装精度低、生产效率低、安全隐患多等问题&#xff0c;且难以适配不同规格润滑油桶的批量灌装需求。现有自动化灌…

作者头像 李华