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

pythonserver side programmingprogramming更新于 2023/11/9 23:28:00

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

字母也会环绕。所以,如果目标是 t = 'z'并且 letters = ['a', 'b'],答案是 'a'。

因此,如果输入为 ["c", "f", "j"], t = 'a',则输出将为 'c'。

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

  • l := 0
  • r := 字母大小 - 1
  • 当 l <= r 时,执行
    • mid :=(l + r) / 2 作为整数
    • 如果 letters[mid] >目标,则
      • r := mid -1
    • 否则,
      • l := mid + 1
  • 返回字母[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

相关文章