zoukankan      html  css  js  c++  java
  • 744. Find Smallest Letter Greater Than Target

    Given a list of sorted characters letters containing only lowercase letters, and given a target letter target, find the smallest element in the list that is larger than the given target.

    Letters also wrap around. For example, if the target is target = 'z' and letters = ['a', 'b'], the answer is 'a'.

    Examples:

    Input:
    letters = ["c", "f", "j"]
    target = "a"
    Output: "c"
    
    Input:
    letters = ["c", "f", "j"]
    target = "c"
    Output: "f"
    
    Input:
    letters = ["c", "f", "j"]
    target = "d"
    Output: "f"
    
    Input:
    letters = ["c", "f", "j"]
    target = "g"
    Output: "j"
    
    Input:
    letters = ["c", "f", "j"]
    target = "j"
    Output: "c"
    
    Input:
    letters = ["c", "f", "j"]
    target = "k"
    Output: "c"
    找到数组里边的大于目标的最小值
    思路如下,用二分查找找到目标即可,如果找不到则返回数组的第一位
    public char nextGreatestLetter(char[] letters, char target) {
            int lo = 0, hi = letters.length;
            while (lo < hi) {
                int mi = lo + (hi - lo) / 2;
                if (letters[mi] <= target) lo = mi + 1;
                else hi = mi;
            }
            return letters[lo % letters.length];
        }

    取mod是因为如果找不到lo最后会变成hi即letters.length

    这种情况下还是返回第一个

  • 相关阅读:
    利用python将表格中的汉字转化为拼音
    vi中批量加注释
    Xtrabackup
    mydumper下载安装
    Adobe Acrobat Pro DC破解
    InnoDB关键特性之double write
    聚集索引与非聚集索引
    has the wrong structure
    初学者如何理解网络协议
    电脑重装系统之后,删除之前的系统
  • 原文地址:https://www.cnblogs.com/icysnow/p/8268882.html
Copyright © 2011-2022 走看看