Optimere min algoritm, hvis det er muligt
Jeg har en vector med et antal tidsintervaller då någet er optaget, f.eks [[09.00 - 12.00], [10.00 - 13.00], [16.00 - 18.00]].Jeg vil finde en hurtig algoritm der finder ud det totala antalet timer objektet er optaget, i ovanstående vector bliver det 6h ((9 til 13) + (16 til 18)).
Jeg har en algoritm der virker, men jeg syns at det borde gå at gøre den hurtigere, men jeg kan ikke finde en god måde. Hvis i kan så tak på forhand.
-------------------
Vector times = new Vector();
for(int i = 0; i < unit.getAllLocationsAndTimes().size(); i++)
{
TransportUnitBase.Transfer t = (TransportUnitBase.Transfer)unit.getAllLocationsAndTimes().get(i);
Time time = new Time();
time._from = (t.getPickup().getHour() * 60 + t.getPickup().getMinute()) / 60;
time._to = (t.getDelivery().getHour() * 60 + t.getDelivery().getMinute()) / 60;
boolean changed = false;
for(int j = 0; j < times.size(); j++)
{
Time checkTime = (Time)times.get(j);
if(time._from <= checkTime._to && checkTime._from <= time._to)
{
checkTime._from = Math.min(time._from, checkTime._from);
checkTime._to = Math.max(time._to, checkTime._to);
changed = true;
break;
}
}
if(!changed)
times.add(time);
}
double hours = 0;
for(int i = 0; i < times.size(); i++)
{
Time time = (Time)times.get(i);
hours += (time._to - time._from);
}
unit.setHours(hours);
