Giả sử có mảng customers, customers[i] = [arrival_i, time_i], arrival_i là thời điểm khách đến (đã sắp xếp), time_i là thời gian chuẩn bị. Khách đến đặt món, đầu bếp chỉ nấu một món tại một thời điểm, nấu theo thứ tự đặt. Tìm thời gian chờ trung bình.
Ví dụ: customers = [[7,2],[8,4],[10,3],[20,1]], đầu ra = 3.5.
- Khách 1: đến 7, nấu 7-9, chờ 2
- Khách 2: đến 8, nấu 9-13, chờ 5
- Khách 3: đến 10, nấu 13-16, chờ 6
- Khách 4: đến 20, nấu 20-21, chờ 1
- Trung bình = (2+5+6+1)/4 = 3.5
Giải pháp
Mô phỏng quá trình nấu nướng:
- arr := danh sách mới, time := 0
- Với mỗi (i, j) trong customers:
- Nếu i > time: time := i + j
- Ngược lại: time := time + j
- Thêm (time - i) vào arr
- Trả về trung bình các giá trị trong arr
Ví dụ minh họa
Xem triển khai sau để hiểu rõ hơn:
def solve(customers):
arr = []
time = 0
for i, j in customers:
if i > time:
time = i + j
else:
time += j
arr.append(time - i)
return sum(arr) / len(arr)
customers = [[7,2],[8,4],[10,3],[20,1]]
print(solve(customers))
Đầu vào
[[7,2],[8,4],[10,3],[20,1]]
Đầu ra
3.5