使用 Python 编写程序找出获得食物包的人数
假设在一次会议中,有两种类型的人。第一种人喜欢素食午餐,另一种人喜欢非素食午餐。但是食物包的数量是有限的,如果素食者收到非素食包或反之亦然,他们不会拿走那个包,而是等到他们得到他们喜欢的包。因此,两种不同类型的食物包和人被表示为 0(素食者)和 1(非素食者)。现在我们得到两个数组,一个包含 n 个食物包(分别用 0 和 1 表示),另一个数组包含 m 个人的队列,他们的偏好用 0 和 1 表示。因此,如果一个人没有收到他们喜欢的食物包,他们会重新进入队列末尾并等待他们喜欢的食物包。因此,我们必须找出没有食物包的人数,以便安排他们喜欢的食物包。
因此,如果输入为 people = [0,1,1,0], packets = [0, 1, 0, 0],则输出将为 1。
因此,有两个人喜欢非素食,并且只有一个非素食包。排队中第一个喜欢非素食的人拿到了那个包,另一个人继续等待,因为没有其他非素食包。因此,输出为 1。
为了解决这个问题,我们将遵循以下步骤 −
temp_arr := 一个包含值 0 和 0 的新列表
对于 people 中的每个人,执行
temp_arr[person] := temp_arr[person] + 1
k := 0
while k <数据包的大小,执行
如果 temp_arr[packets[k]]>0,则
temp_arr[packets[k]] := temp_arr[packets[k]] - 1
否则,
退出循环
k := k + 1
返回数据包的大小 - k
示例
让我们看看下面的实现以便更好地理解 −
def solve(people, packets):
temp_arr = [0,0]
for person in people:
temp_arr[person] += 1
k = 0
while k < len(packets):
if temp_arr[packets[k]]>0:
temp_arr[packets[k]]-=1
else:
break
k += 1
return len(packets) - k
print(solve([0,1,1,0], [0, 1, 0, 0]))
输入
[0,1,1,0], [0, 1, 0, 0]
输出
1
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

