【LeetCode(Java) - 744】寻找比目标字母大的最小字母
【LeetCode(Java) - 744】寻找比目标字母大的最小字母
文章目录
1、题目描述
2、解题思路
3、解题代码
1、题目描述
2、解题思路
??由于字符列表有序,且找出比目标字母大的最小字母,很明显采用二分查找。
??区间呈左开右闭形式。
??当中间字符小于等于目标字符,则更新左边界为 mid + 1;
??当中间字符大于目标字符时,可能它就是比目标字母大的最小字母,更新右边界为 mid;
??当结束 while 循环时,left == right,此时 left 就是比目标字母大的最小字母的索引,因为字母是循环出现的,需要和字符列表取模。
3、解题代码
class Solution {
public char nextGreatestLetter(char[] letters, char target) {
int left = 0, right = letters.length;
while (left < right) {
int mid = left + (right - left) / 2;
if (letters[mid] <= target) {
left = mid + 1;
} else {
right = mid;
}
}
return letters[left % letters.length];
}
}
【LeetCode(Java) - 744】寻找比目标字母大的最小字母相关教程
JAVA基础 面向对象(四) 代码块 static 抽象类 内部类
JAVA基础 面向对象(四) 代码块 static 抽象类 内部类 一、static 关键字引入 static关键字声明的属性和方法是类自己的,所有类实例化的对象,都共享这些static属性和方法。 static可用于修饰:属性、方法、代码块、内部类 1.1 static修饰属性 static修饰后
【JAVA】字母菱形
【JAVA】字母菱形 输入描述 输入一个大写字母与一个整数n,1=n=26; 输出描述 输出如下高度为2n-1的菱形; 注意:A的下一个字母是B,Z的下一个字母是A 样例输入 R 12 样例输出 思路 图形由字母和空格组成,而且是由上下两个三角形构成,用一个数组存放字母,用
leetcode-35 搜索插入位置
leetcode-35 搜索插入位置 刚拿到题目的时候,分成两步做的。 第一步:如果target存在于我们的容器中,我就返回位置,本来想用find()函数去处理的。 但是有一点问题,这里刚好去复习一下: string中的find(),如果查找到,那么返回的是查找字符串的首地址值。
Java设计模式(四):建造者模式(生成器模式)
Java设计模式(四):建造者模式(生成器模式) 模式动机 在现实生活中存在一些复杂的产品,如汽车,它有方向盘、轮胎、发动机灯组件构造而成,但是用户无需知道各个组件的生产过程与具体的构造过程,只需要最后得到一个汽车即可。 在软件设计中,也有一些复
Java十大算法(一)——非递归二分查找
Java十大算法(一)——非递归二分查找 在前面的文章中我们写过一篇关于二分查找的递归实现(https://blog.csdn.net/lmlzww/article/details/107029360)那么除过递归的实现方式还用一种实现便是我们的非递归实现,非递归二分查找算法的实现主要是通过在方法
Dbutil使用
Dbutil使用 Dbutil 的使用小结 Java与数据库的连接包括:导包、注册驱动、获取与数据库的连接对象、获取SQL语句的执行者对象、获取结果集对象、关闭连接等。其中连接池包含了注册驱动和获取与数据库连接两个步骤,而dbutils简化了其他步骤。 DBUtils封装了JDB
Java常见的十大算法(二)——分治算法之汉诺塔
Java常见的十大算法(二)——分治算法之汉诺塔 分治算法指的是将我们需要解决的问题分而解之,将大的问题分解成小的问题,算法最后的结果就是最后的那个小问题的解,分治算法中的小问题之间往往是可以独立的,不是相互依赖的。常见的诸多高效算法中都运用了
4年Java程序员月薪不过3万就不要拿命换钱了
4年Java程序员:月薪不过3万,就不要拿命换钱了! TIOBE 公布 2020 年 9 月的编程语言排行榜:Java占有率继续下降,从上个月的14.43%降到13.48%,同比下降3.18%。 在Java的学习群里,问到大家工作3-5年的瓶颈,回答基本大同小异: 工作 内容重复 ,业务量到