每日一题

Posted Roam-G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题相关的知识,希望对你有一定的参考价值。

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

难度简单197

给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。

在比较时,字母是依序循环出现的。举个例子:

  • 如果目标字母 target = 'z' 并且字符列表为 letters = ['a', 'b'],则答案返回 'a'

示例 1:

输入: letters = ["c", "f", "j"],target = "a"
输出: "c"

示例 2:

输入: letters = ["c","f","j"], target = "c"
输出: "f"

示例 3:

输入: letters = ["c","f","j"], target = "d"
输出: "f"

方法一:线性查找
由于给定的列表已经按照递增顺序排序,因此可以从左到右遍历列表,找到第一个比目标字母大的字母,即为比目标字母大的最小字母。

如果目标字母小于列表中的最后一个字母,则一定可以在列表中找到比目标字母大的最小字母。如果目标字母大于或等于列表中的最后一个字母,则列表中不存在比目标字母大的字母,根据循环出现的顺序,列表的首个字母是比目标字母大的最小字母。

class Solution 
    public char nextGreatestLetter(char[] letters, char target) 
        int length = letters.length;
        char nextGreater = letters[0];
        for (int i = 0; i < length; i++) 
            if (letters[i] > target) 
                nextGreater = letters[i];
                break;
            
        
        return nextGreater;
    

以上是关于每日一题的主要内容,如果未能解决你的问题,请参考以下文章

每日一题,每日一字

Java每日一题20161227

JS-每日一题

leetcode 每日一题 953. 验证外星语词典

笔试强训之每日一题

笔试强训之每日一题