Ich habe jetzt doch auch noch eine Idee, die ähnlich zu der meiner Vorrednerin ist. Man spanne für jeden Tag ein Array auf mit 24 * 60 = 1440 Werten. Für jede Minute einer Zeitspanne inkrementiere man das Array an entsprechender Stelle um 1. Beispiel:
Code:
15:10 -> 15 * 60 + 10 = 370 -> Array[370] := Array[370] + 1
15:11 -> 15 * 60 + 11 = 371 -> Array[371] := Array[371] + 1
usw.
15:36 -> 15 * 60 + 36 = 396 -> Array[396] := Array[396] + 1
In einem zweiten Schritt berechne ich das Maximum des Arrays und speichere dessen erstes Auftreten, d.h. den Index im Array. Ist das Maximum 1, so kann ich abbrechen, da es keine Überlappung an diesem Tag gibt. Ist diese jedoch größer als 1, so springe ich zum gespeicherten Index und gehe davon ausgehend immer weiter (Index + 1) bis ich einen Wert finde, der kleiner als der Maximalwert ist. Somit erhalte ich die Überlappungsdauer in Minuten.
// edit
Wenn du folgendes suchst, dann ist meine Idee falsch:
Code:
max { Menge der paarweise Zeitüberschneidungen }
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)