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/

  • 相关阅读:
    xcode开发笔记
    css样式笔记
    weex开发的笔记
    启动优化优秀文章和部分内容摘录
    备注Weex开发
    ARKit的使用示例
    数据结构:数据结构可分为几类?
    JAVAWEB应用模块(一)登录模块
    IDEA常用操作链接
    java中成员变量,局部变量,静态变量的辨析
  • 原文地址:https://www.cnblogs.com/jimmycheng/p/11297082.html
Copyright © 2011-2022 走看看