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


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

字母也会循环。因此,如果目标是 t = 'z',字母 = ['a', 'b'],则答案为 'a'。

所以,如果输入类似于 ["c", "f", "j"], t = 'a',则输出将是 'c'。

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

  • l := 0
  • r := letters 的大小 - 1
  • while l <= r, 执行
    • mid :=(l + r) / 2 为整数
    • if letters[mid] > target, 则
      • r := mid -1
    • 否则,
      • l := mid + 1
  • 返回 letters[l mod letters 的大小]

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

示例

 实时演示

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

更新日期: 04-07-2020

836 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.