Find Smallest Letter Greater Than Target — Circular Binary Search

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro