本文主要是介绍LeetCode - 744,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:https://leetcode.com/problems/find-smallest-letter-greater-than-target/description/
这题就是在已排好序的字符数组中找出比指定字母大的而且最近的字母。如果指定字母大于等于数组中最后一个字母,则输出第一个。
1.如果target < letters[mid],那么向左压缩区间
2.剩下两种情况则向右压缩区间
但是这里面还存在一种可能,就是ans = lettersSize - 1且 letters[ans] <= target.
就是前面说的指定字母大于等于数组中最后一个字母,那么让ans = 0就好了。
3.如果遍历完都找不到答案,那么说明指定字母比第一个字母都还要小。
char nextGreatestLetter(char* letters, int lettersSize, char target) {int l = 0,r = lettersSize - 1;int ans = -1;while(l < r){int mid = l + (r - l) / 2;if(target < letters[mid]){r = mid; }else{l = mid + 1; ans = l;if(ans == (lettersSize - 1) && letters[ans] <= target){ans = 0;}}}if(ans == -1){ans = 0;}return letters[ans];
}
这篇关于LeetCode - 744的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!