做域名不做网站可以吗,手机端网站开发视频教程,网站建设完工后在什么科目核算,瀑布式网站LeetCode二分查找#xff1a;寻找比目标字母大的最小字母
题目描述
给你一个字符数组 letters#xff0c;该数组按非递减顺序排序#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。
返回 letters 中大于 target 的最小的字符。如果不存在这样的字符寻找比目标字母大的最小字母
题目描述
给你一个字符数组 letters该数组按非递减顺序排序以及一个字符 target。letters 里至少有两个不同的字符。
返回 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]。解题思路
今天的二分查找挺简单的代码一口气写完直接通过了
也可以考虑直接顺序遍历不过这种与本练习偏移不再赘述。
注意到他是一个非递减的排序那么就可以考虑使用二分查找至于找到比他大的那只需要返回跳出while循环时右边的那一个就可以
代码
public class BinSearch2 {public char nextGreatestLetter(char[] letters, char target) {int jletters.length-1;if (letters[j]target)return letters[0];int i0;while (ij){int midi(j-i)/2;if (letters[mid]target){jmid-1;}else {imid1;}}return letters[i];}public static void main(String[] args) {BinSearch2 bnew BinSearch2();System.out.println(b.nextGreatestLetter(new char[]{c, f, j}, a));}
}