每日一题
Posted Roam-G
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题相关的知识,希望对你有一定的参考价值。
难度简单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;
以上是关于每日一题的主要内容,如果未能解决你的问题,请参考以下文章