news 2026/6/10 14:28:03

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/6/10 12:20:57

专科生必看!当红之选的AI论文软件 —— 千笔AI

专科生必看&#xff01;当红之选的AI论文软件 —— 千笔AI你是否曾为论文选题而焦虑不已&#xff1f;是否在深夜里面对空白文档无从下笔&#xff1f;是否反复修改却仍对表达不满意&#xff1f;论文写作的每一个环节都像是一场与时间的赛跑&#xff0c;而你却常常被卡在半路。别…

作者头像 李华
网站建设 2026/6/10 12:54:38

乐鑫信息 ESP32-WROVER-IE(16MB) SMD WiFi模块

ESP32-WROVER-E 和 ESP32-WROVER-IE 是两款通用型 Wi-Fi Bluetooth Bluetooth LE MCU 模组&#xff0c;功能强 大&#xff0c;用途广泛&#xff0c;可以用于低功耗传感器网络和要求极高的任务&#xff0c;例如语音编码、音频流和MP3解码等

作者头像 李华
网站建设 2026/6/2 1:00:05

基于51单片机的抢答器设计

基于51单片机的抢答器设计 一、设计背景与意义 抢答器是知识竞赛、课堂互动、技能比拼等场景的核心设备&#xff0c;传统简易抢答器存在抢答判定不精准、功能单一、无防作弊机制等问题&#xff0c;而商用智能抢答器成本高、操作复杂&#xff0c;难以满足中小学校、小型企业的…

作者头像 李华
网站建设 2026/6/10 12:53:46

【Linux命令大全】008.磁盘维护之mkfs.minix命令(实操篇)

【Linux命令大全】008.磁盘维护之mkfs.minix命令&#xff08;实操篇&#xff09; ✨ 本文为Linux系统磁盘维护命令的全面汇总与深度优化&#xff0c;结合图标、结构化排版与实用技巧&#xff0c;专为高级用户和系统管理员打造。 (关注不迷路哈&#xff01;&#xff01;&#xf…

作者头像 李华
网站建设 2026/6/6 8:16:02

探索光伏控制器中的MPPT——变步长扰动观察法仿真模型

光伏控制器&#xff0c;mppt光伏最大功率点跟踪扰动观察法变步长扰动观察法仿真模型 在光伏系统中&#xff0c;光伏控制器扮演着极为关键的角色&#xff0c;而最大功率点跟踪&#xff08;MPPT&#xff09;技术则是光伏控制器的核心功能之一。今天咱就来深入聊聊MPPT中的变步长…

作者头像 李华
网站建设 2026/6/5 12:05:53

学霸同款AI论文工具TOP10:本科生毕业论文必备测评

学霸同款AI论文工具TOP10&#xff1a;本科生毕业论文必备测评 学术写作工具测评&#xff1a;为何需要一份2026年榜单&#xff1f; 随着AI技术在学术领域的深入应用&#xff0c;越来越多的本科生开始依赖智能写作工具来提升论文效率。然而&#xff0c;面对市场上琳琅满目的选择&…

作者头像 李华