Hội nghị có 2 loại người: ăn chay (0) và không chay (1). Có mảng packets (loại gói ăn) và people (hàng đợi ưu tiên). Người không được loại ưu tiên sẽ vào cuối hàng đợi. Tìm số người không nhận được gói ăn.
Ví dụ: people=[0,1,1,0], packets=[0,1,0,0] → 1. Có 2 người ăn không chay nhưng chỉ 1 gói không chay.
Giải thuật (Đếm tần suất)
- Đếm số người mỗi loại:
temp_arr[0], temp_arr[1]. - Duyệt
packetstheo thứ tự:- Nếu còn người thích loại
packets[k](temp_arr[packets[k]] > 0): giảm đếm. - Ngược lại: dừng (các gói còn lại không ai lấy).
- Nếu còn người thích loại
- Trả về
len(packets) - k(số gói còn lại = số người không nhận được).
Ví dụ minh họa
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]))
Đầu vào
[0,1,1,0], [0, 1, 0, 0]
Đầu ra
1