检查是否可以在 Python 中使用不同的注释为客户队列提供服务

假设我们有一个名为 notes 的数组,代表队列中客户持有的不同卢比纸币。他们都在等着买价值 50 卢比的门票。这里可能的注释是 [50、100 和 200]。我们必须检查我们是否可以按顺序向人们出售门票,最初我们手上有 0 卢比。

因此,如果输入类似于 notes = [50, 50, 100, 100],那么前两个的输出将为 True,我们不需要返回任何内容,但现在我们有两个 50 卢比的纸币。因此,对于最后两张,我们可以退还 50 卢比的钞票并按顺序出售所有门票。

示例

让我们看看以下实现以获得更好的理解 -

from collections import defaultdict
def solve(notes):
   freq = defaultdict(int)
   i = 0
   while i < len(notes):
      if notes[i] == 50:
         freq[50] += 1
      elif notes[i] == 100:
         freq[100] += 1
         if freq[50] == 0:
            break
         freq[50] -= 1
      else:
         if freq[100] > 0 and freq[50] > 0:
            freq[100] -= 1
            freq[50] -= 1
         elif freq[50] >= 3:
            freq[50] -= 3
         else:
            break
      i += 1
   if i == len(notes):
      return True
   return False
notes = [50, 50, 100, 100]
print(solve(notes))

输入

[50, 50, 100, 100]
输出结果
True

猜你喜欢