zoukankan      html  css  js  c++  java
  • 【C++、二分法】LeetCode744. 寻找比目标字母大的最小字母

    1. 寻找比目标字母大的最小字母
    给你一个排序后的字符列表 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"
     
    

    提示:

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

    贴一篇优雅的解答:

    class Solution {
    public:
        char nextGreatestLetter(vector<char>& letters, char target) {
            int len = letters.size();
            int l = 0;
            int r = len - 1;
            while (l <= r)
            {
                int mid = l + (r - l) / 2;
                if (target < letters[mid])
                    r = mid - 1;
                else
                    l = mid + 1;
            }
            return letters[l % len];
        }
    };
    
  • 相关阅读:
    topcoder srm 445 div1
    topcoder srm 440 div1
    topcoder srm 435 div1
    topcoder srm 430 div1
    topcoder srm 400 div1
    topcoder srm 380 div1
    topcoder srm 370 div1
    topcoder srm 425 div1
    WKWebView强大的新特性
    Runtime那些事
  • 原文地址:https://www.cnblogs.com/dindin1995/p/13059081.html
Copyright © 2011-2022 走看看