?
O(N^2), , , , , . , .
var groupedReservations = [
{id:2,start:1,end:2,overlap_count:0,track:0},
{id:3,start:2,end:3,overlap_count:0,track:0},
{id:4,start:2,end:4,overlap_count:0,track:0},
{id:5,start:2,end:6,overlap_count:0,track:0},
{id:6,start:3,end:8,overlap_count:0,track:0},
{id:7,start:6,end:9,overlap_count:0,track:0},
];
countOverlaps(groupedReservations);
console.log(groupedReservations);
function countOverlaps(reservations) {
var len = reservations.length;
for(var i=0; i<len; i++) {
for(var j=i+1; j<len; j++) {
if(reservations[i].end > reservations[j].start) {
reservations[i].overlap_count++;
reservations[j].overlap_count++;
if(reservations[j].track == reservations[i].track)
reservations[j].track++;
}
else break;
}
}
}
, , ( ). .
var groupedReservations = [
{id:2,start:1,end:2,overlap:[],track:0},
{id:3,start:2,end:3,overlap:[],track:0},
{id:4,start:2,end:4,overlap:[],track:0},
{id:5,start:2,end:6,overlap:[],track:0},
{id:6,start:3,end:8,overlap:[],track:0},
{id:7,start:6,end:9,overlap:[],track:0},
];
countOverlaps(groupedReservations);
console.log(groupedReservations);
function countOverlaps(reservations) {
var len = reservations.length;
for(var i=0; i<len; i++) {
for(var j=i+1; j<len; j++) {
if(reservations[i].end > reservations[j].start) {
reservations[i].overlap.push(reservations[j]);
reservations[j].overlap.push(reservations[i]);
if(reservations[j].track == reservations[i].track)
reservations[j].track++;
}
else break;
}
}
}