博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode744
阅读量:4316 次
发布时间:2019-06-06

本文共 940 字,大约阅读时间需要 3 分钟。

题目:

给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。

数组里字母的顺序是循环的。举个例子,如果目标字母target = 'z' 并且有序数组为 letters = ['a', 'b'],则答案返回 'a'

示例:

输入:letters = ["c", "f", "j"]target = "a"输出: "c"输入:letters = ["c", "f", "j"]target = "c"输出: "f"输入:letters = ["c", "f", "j"]target = "d"输出: "f"输入:letters = ["c", "f", "j"]target = "g"输出: "j"输入:letters = ["c", "f", "j"]target = "j"输出: "c"输入:letters = ["c", "f", "j"]target = "k"输出: "c"

注:

  1. letters长度范围在[2, 10000]区间内。
  2. letters 仅由小写字母组成,最少包含两个不同的字母。
  3. 目标字母target 是一个小写字母。

解题思路:

如果letters.back()<=target,那么直接返回letters[0]即可;

剩余的情况,使用二分查找,进行查找。

 

代码:

class Solution {public:    char nextGreatestLetter(vector
& letters, char target) { if(target >= letters.back()) return letters[0]; int left=0,right=letters.size(); while(left

 

相关知识:

二分查找:

二分查找注意三个语句必须搭配

1.right = letters.size()。

2.left < right。

3.right = mid。

记住这一种即可。

转载于:https://www.cnblogs.com/yxlsblog/p/10355386.html

你可能感兴趣的文章
0038-算一算是一年中的第几天
查看>>
51nod 1094 【水题】
查看>>
003.第一个动画:绘制直线
查看>>
ng-深度学习-课程笔记-2: 神经网络中的逻辑回归(Week2)
查看>>
正则表达式的搜索和替换
查看>>
个人项目:WC
查看>>
地鼠的困境SSL1333 最大匹配
查看>>
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>
css规范 - bem
查看>>
UVALive 6145 Version Controlled IDE(可持久化treap、rope)
查看>>
mysql 将两个有主键的表合并到一起
查看>>
底部导航栏-----FragmentTabHost
查看>>
在linux中安装jdk以及tomcat并shell脚本关闭启动的进程
查看>>