Find Smallest Letter Greater Than Target — Circular Binary Search
Advertisement
Problem 316 · Find Smallest Letter Greater Than Target
Difficulty: Medium · Pattern: Circular Left Boundary
The list wraps around — if no letter is greater, return the first.
Solutions
# Python
def nextGreatestLetter(letters, target):
lo, hi = 0, len(letters)
while lo < hi:
mid = (lo+hi)//2
if letters[mid] <= target: lo = mid+1
else: hi = mid
return letters[lo % len(letters)] # circular wrap
// Java
public char nextGreatestLetter(char[] letters, char target) {
int lo=0, hi=letters.length;
while (lo<hi) {
int mid=lo+(hi-lo)/2;
if (letters[mid]<=target) lo=mid+1; else hi=mid;
}
return letters[lo%letters.length];
}
Complexity
- Time: O(log n)
- Space: O(1)
Advertisement