Junior — Senior
51
Оценка времени простоя запросов
被问到的公司:
任务条件
Серверные ответы зачастую занимают значительно меньше времени, чем общее время, которое пользователь наблюдает на клиенте. Выяснилось, что новые запросы часто поступают, пока предыдущие ещё не завершились. Нужно измерить степень этой проблемы: вычислить суммарное время, которое запросы проводят в очереди ожидания.
В логах фиксируются два момента: момент отправки запроса в сервис и момент получения ответа, оба указаны в секундах. Записи упорядочены по возрастанию времени отправки.
Пример визуализации (секунды):
0123456789
-##.## - - - - - Запрос 1
-------##.## - - - - Запрос 2
-------------##.## Запрос 3
Для набора интервалов [(1, 4), (3, 6), (7, 9)] требуется подсчитать, сколько секунд каждый запрос ждёт, пока предыдущие не освободятся.
def balancer_error_rate(logs: list[tuple[int, int]]) -> int:
pass
balancer_error_rate([(1, 5), (4, 7)]) # 2
balancer_error_rate([(2, 7), (5, 10)]) # 3
balancer_error_rate([(2, 7), (9, 10)]) # 0
balancer_error_rate([(2, 7), (9, 13), (10, 15)]) # 4
Функция должна вернуть суммарное время ожидания всех запросов в очереди.