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/

  • 相关阅读:
    NoSuchMethodError: Closure call with mismatched arguments:
    pod reopened update慢
    Flutter ListView 不满屏 无法滚动
    三分钟告诉你MBR和GPT的区别,选择适合自己的
    centos8 安装VMware,之后不能启动问题处理
    Docker学习之路
    JavaScript 编程语言
    工具
    Java开发
    Oracle的学习
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/11297082.html
Copyright © 2011-2022 走看看