LeetCode题解:744. 寻找比目标字母大的最小字母
文章目录
- 题目
-
- 1、题目描述
- 2、原题链接
- 解题报告
-
- 1、解题思路
- 2、解题方法
- 2、代码详解
- 总结
题目
1、题目描述
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。
在比较时,字母是依序循环出现的。举个例子:
如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’
2、原题链接
寻找比目标字母大的最小字母
解题报告
1、解题思路
可以直接枚举判断;
我选择用二分查找:
(1)循环条件:左右指针不重合。
(2)若当前字符小于等于 t a r g e t target target 更新左指针:l = mid
(3)若当前字符大于 t a r g e t target target 更新右指针:r= mid
(4)若 r = lettersSize
说明所有字符都小于等于 t a r g e t target target 返回 letters[0]
否则返回 letters[r]
2、解题方法
2、代码详解
char nextGreatestLetter(char* letters, int lettersSize, char target){ int l, r, mid, tag; l = -1; r = lettersSize; tag = target - 'a'; while(l + 1 > 1; if(letters[mid] - 'a' <= tag){ l = mid; }else{ r = mid; } } return r < lettersSize ? letters[r] : letters[0];}
总结
简单题虽然简单但你可以练习其他方法啊,要是都用暴力枚举算法怎么巩固提高。