Преобразуете список звонков в список содержащий 2 поля - время, тип события. Типов события два - начало звонка, завершение звонка. Сортируете этот список по столбцу времени. Проходите последовательно по этому списку и в счетчик заносите +1 если событие начала звонка, и -1 если завершение звонка. Сравниваете значение счетчика с предыдущим значением, сохраняете максимум и время соответсвующего события. Так можно находить максимумы не только в пределах суток, но и в любом диапазоне времени.