假设我们有一个名为 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