使用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
当k < packets的大小,执行以下操作:
如果temp_arr[packets[k]] > 0,则
temp_arr[packets[k]] := temp_arr[packets[k]] - 1
否则,
退出循环
k := k + 1
返回packets的大小 - 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP