//
// Created by Mr.Hu on 2018/6/24.
//
// leetcode 744 find smallest letter greater than target
//
// 题目要求从给定的字符列表(已排序)中,搜素第一个比target字符大的字符并输出,如果不存在,则返回letters中的第一个,此处可以当成一个环。
//
// 这个题目做的很晕,但是理解了binary_search中的一些特点,二分搜索从第0为到第length-1位,
// 如果存在相等情况,则有两种情况:1、相等的位置是否为最后一位;2、下一位是否也相等,即该字符重复出现。
// 如果不存在相等情况,则while循环会在left==right的情况时终止,此时也存在三种情况:1、left(right)在第0处;
// 2、left(right)在第length-1处;3、left(right)在中间位置;
// 1、在第0处,需要判断0出的char与target的大小,如果<=target,则返回letters[1],否则返回letters[0];
// 2、在length-1处,如果>target,则返回letters[length-1],否则返回letters[0];
// 3、在中间位置,如果>target,则返回letters[left],否则返回letters[left+1];
//
// 以上方法超过了百分之九十九的accepted solution
//
1 |
|