zoukankan      html  css  js  c++  java
  • 744. 寻找比目标字母大的最小字母『简单』

    题目来源于力扣(LeetCode

    一、题目

    744. 寻找比目标字母大的最小字母

    题目相关标签:二分查找

    提示:

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

    二、解题思路

    1. 据题目可知:letters 数组中的元素是依序出现的(即升序排列)

    2. 遍历数组,将当前遍历的元素与 target 做减法操作,当差大于 0 时说明当前遍历元素比 target 大

    3. 又因为数组是有序的,且是从小到大,那么一旦遍历的元素与 target 的差大于 0 时,该元素即大于目标字母的最小字母

    4. 遍历完数组后仍然没有与 target 相减大于 1 的元素,即 letters 数组中的元素都小于等于 target

    5. 据题目提示:letters 中的字母是循环出现的,那么 letters 数组的第一个元素即是大于目标字母的最小字母

    三、代码实现

    public static char nextGreatestLetter(char[] letters, char target) {
        for (char i : letters) {
            // 必须是两字符的差大于零,等于零时说明两字符相等,不计算
            if (i - target > 0) {
                return i;
            }
        }
        // 遍历完数组未找到比 target 大的字符时,返回数组首位元素
        return letters[0];
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        char[] letters = {'c', 'f', 'j'};
        char target = 'a';  // output:'c'
        
    //    char[] letters = {'c', 'f', 'j'};
    //    char target = 'c';  // output:'f'
        
    //    char[] letters = {'c', 'f', 'j'};
    //    char target = 'd';  // output:'f'
        
    //    char[] letters = {'c', 'f', 'j'};
    //    char target = 'g';  // output:'j'
        
    //    char[] letters = {'c', 'f', 'j'};
    //    char target = 'j';  // output:'c'
        
    //    char[] letters = {'c', 'f', 'j'};
    //    char target = 'k';  // output:'c'
        char result = nextGreatestLetter(letters, target);
    
        System.out.println(result);
    }
    
  • 相关阅读:
    H.264编码之DCT变换原理
    颜色空间转换
    jdbc 大数据存储 图片读取
    spring 事务配置
    Cglib代理
    jdk代理
    spring装配bean
    map 常用方法
    list map set常用方法之list
    calendar 类 用法
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12897509.html
Copyright © 2011-2022 走看看