在Python中找到大于目标的最小字母

假设我们有一个排序字符字母列表。它仅包含小写字母,现在我们有了目标字母t,我们必须在列表中找到大于给定目标的最小元素。

字母也环绕着。因此,如果目标是t ='z'并且字母= ['a','b'],则答案是'a'。

因此,如果输入类似于[“ c”,“ f”,“ j”],t ='a',则输出将为'c'。

为了解决这个问题,我们将遵循以下步骤-

  • l:= 0

  • r:=字母大小-1

  • 当l <= r时

    • l:=中+ 1

    • r:= -1中

    • 中:=(l + r)/ 2作为整数

    • 如果字母[mid]>目标,则

    • 除此以外,

    • 返回字母[l mod字母大小]

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def nextGreatestLetter(self, letters, target):
          l = 0
          r = len(letters) - 1
          while l <= r:
             mid = (l + r)//2
             if letters[mid] > target:
                r = mid -1
             else:
                l = mid + 1
          return letters[l % len(letters)]
    ob = Solution()print(ob.nextGreatestLetter(["c", "f", "j"], "a"))

    输入值

    ["c", "f", "j"], "a"

    输出结果

    c