Esse desafio foi muito inspirado por este post do Stack Overflow .
Desafio
Dado um grupo de clientes em termos de quando eles entram em uma sala e quando eles saem, determine o (s) período (s) de tempo em que a sala tem um número máximo de pessoas. A resolução do tempo deve ser para o minuto.
Por exemplo, se existem três clientes 8 - 10
, 9 - 11
, 10 - 12
, em seguida, a resposta correta seria 9 - 11
; durante esse período, há dois clientes na sala, o maior possível.
Entrada
A entrada será uma lista de pares de alguma forma. Pode ser uma lista de duas tuplas, uma lista de comprimento par com elementos intercalados etc., qualquer formato de entrada razoável. Os horários podem ser fornecidos em qualquer formato razoável, em 12 ou 24 horas. Você também pode inserir a hora como o número de minutos após a meia-noite.
Resultado
A saída deve ser uma lista de pares de alguma forma, mas a saída é mais rígida. A saída não pode ser uma lista simples, deve ser uma lista de duas tuplas ou uma lista de listas, etc. Os horários podem ser exibidos em qualquer formato razoável, em 12 ou 24 horas. Você também pode imprimir o tempo como o número de minutos após a meia-noite.
Exemplos
input
output
INPUT
08:00 - 10:00
09:00 - 11:00
10:00 - 12:00
OUTPUT
09:00 - 11:00
INPUT
08:20 - 09:20
09:00 - 09:10
08:00 - 09:30
08:50 - 10:40
OUTPUT
09:00 - 09:10
INPUT
08:00 - 10:00
09:00 - 10:00
09:30 - 11:00
OUTPUT
09:30 - 10:00 # The output is not always in the input list
INPUT
00:00 - 02:00
01:00 - 03:00
04:00 - 06:00
05:00 - 07:00
OUTPUT # This is the expected output for when there are multiple time ranges with the same "business".
01:00 - 02:00
05:00 - 06:00
Você pode supor que a segunda vez em um par será sempre após a primeira vez. Os intervalos de tempo não serão executados durante a meia-noite.
09:00 - 10:00, 10:00 - 11:00
uma saída válida para o primeiro caso de teste?