Overlapping discs
by rishul matta
JavaScript
function solution(A) {
if (A.length < 1) {
return 0;
}
// write your code in JavaScript (Node.js 8.9.4)
debugger;
function sort(array) {
var length = array.length,
mid = Math.floor(length * 0.5),
left = array.slice(0, mid),
right = array.slice(mid, length);
if (length === 1) {
return array;
}
return merge(sort(left), sort(right));
}
function merge(left, right) {
var result = [];
while (left.length || right.length) {
if (left.length && right.length) {
if (left[0].start < right[0].start) {
result.push(left.shift());
} else {
result.push(right.shift());
}
} else if (left.length) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
return result;
}
let intervals = sort(A.map(function(rad, index) {
return {
start: index - rad,
end: index + rad
}
}));
let intersection = 0;
debugger;
for (var j = 0; j < intervals.length; ++j) {
let endingTime = intervals[j].end;
for (var i = j + 1; i < intervals.length; ++i) {
if (intervals[i].start <= endingTime) {
intersection++;
}
}
}
return intersection;
}
alert(solution([0,1,0]))