zoukankan      html  css  js  c++  java
  • LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)

    题目标签:Binary Search

      题目给了我们一组字母,让我们找出比 target 大的最小的那个字母。

      利用 binary search,如果mid 比 target 小,或者等于,那么移到右半边;

      如果 mid 比target 大,那么移到左半边,这里要包括mid,因为mid 可能是那个要找的字母。

      这里还要检查一个可能,如果 target 是 z, 那么 最小的那个字母,就是 比z 大的字母。

      来覆盖这个可能性,可以用 target 比 array 里最后那个字母, 如果target大的话, 那么返回 第一个字母。

    Java Solution:

    Runtime:  0 ms, faster than 100 % 

    Memory Usage: 39 MB, less than 85 %

    完成日期:08/01/2019

    关键点:用 target 比 letters[n-1] 来包括 “letters also wrap around”

    class Solution {
        public char nextGreatestLetter(char[] letters, char target) {
            
            int n = letters.length;
            
            if(target >= letters[n - 1])
                return letters[0];
            
            int left = 0;
            int right = n - 1;
            
            while(left < right) {
                int mid = left + (right - left) / 2;
                
                if(letters[mid] <= target)
                    left = mid + 1;
                else if(letters[mid] > target)
                    right = mid;
            }
            
            return letters[right];
        }
    }

    参考资料:LeetCode Discuss

    LeetCode 题目列表 - LeetCode Questions List

    题目来源:https://leetcode.com/

  • 相关阅读:
    #2019090700004
    51nod 1191-贪心+并查集
    hdu 5015-矩阵快速幂
    树形DP—依赖背包模板
    HDU 1074—压缩DP
    动态绑定的开销
    动态绑定
    静态绑定(前期绑定)
    继承的一些优点
    多态置换原则初始化基类对象
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/11297082.html
Copyright © 2011-2022 走看看