-
Time complexity:
$$O(log\ n)$$ -
Space complexity:
$$O(1)$$
class Solution:
def nextGreatestLetter(self, letters: List[str], target: str) -> str:
if target >= letters[-1]:
return letters[0]
smallestSoFar = letters[-1]
low, high = 0, len(letters) - 1
while low <= high:
mid = (low + high) // 2
if letters[mid] > target:
smallestSoFar = letters[mid]
high = mid - 1
else:
low = mid + 1
return smallestSoFar