Zitat von
s.h.a.r.k:
Hier mal meine Idee als Algo, nur noch ein wenig optimiert:
Delphi-Quellcode:
type
TTimePeriod =
record
StartTimestamp : TDateTime;
EndTimestamp : TDateTime;
end;
TTimePeriodArray =
array of TTimePeriod;
function GetMaxTimeOverlaps(
const ATimePeriods : TTimePeriodArray): Integer;
var
TimeArray :
array [0..1439]
of Integer;
tp : TTimePeriod;
i : Integer;
n : Integer;
IndexStart, IndexEnd : Integer;
Maximum, Value: Integer;
begin
// Verteilung der Zeiten auf das Array
Maximum := 1;
for i := 0
to Length(ATimePeriods) - 1
do
begin
tp := ATimePeriods[i];
IndexStart := HourOf(
tp.StartTimestamp) * 60 + MinuteOf(
tp.StartTimestamp);
IndexEnd := HourOf(
tp.EndTimestamp) * 60 + MinuteOf(
tp.EndTimestamp);
for n := IndexStart
to IndexEnd
do
begin
Value := TimeArray[n];
Inc(Value);
if (Value > Maximum)
then
Maximum := Value;
TimeArray[n] := Value;
end;
end;
Result := Maximum - 1;
end;
Das werde ich über Ostern bestimmt mal austesten, danke schon mal
Martin