समस्या
JavaScript फ़ंक्शन जो अंतरालों की दो सरणियों arr1 और arr2 को लेता है जो युग्मवार असंयुक्त और क्रमबद्ध क्रम में हैं।
एक बंद अंतराल [a, b] (a <= b के साथ) वास्तविक संख्याओं x के समुच्चय को दर्शाता है जहां a <= x <= b।
दो बंद अंतरालों का प्रतिच्छेदन वास्तविक संख्याओं का एक समुच्चय है जो या तो खाली है, या एक बंद अंतराल के रूप में दर्शाया जा सकता है। उदाहरण के लिए, [1, 3] और [2, 4] का प्रतिच्छेदन [2, 3] है।) हमारे फ़ंक्शन को इन दो अंतराल सरणियों का प्रतिच्छेदन वापस करना चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr1 = [[0,2],[5,10],[13,23],[24,25]]; const arr2 = [[1,5],[8,12],[15,24],[25,26]];
तो आउटपुट होना चाहिए -
const output = [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]];
उदाहरण
इसके लिए कोड होगा -
const arr1 = [[0,2],[5,10],[13,23],[24,25]];
const arr2 = [[1,5],[8,12],[15,24],[25,26]];
const findIntersection = function (A, B) {
const res = [];
let i = 0;
let j = 0;
while (i < A.length && j < B.length) {
const [a, b] = A[i];
const [c, d] = B[j];
const lo = Math.max(a, c);
const hi = Math.min(b, d);
if (lo <= hi) {
res.push([Math.max(a, c), Math.min(b, d)]);
}
if (b < d) {
i++;
} else {
j++;
}
}
return res;
};
console.log(findIntersection(arr1, arr2));
आउटपुट
कंसोल में आउटपुट होगा -
[ [ 1, 2 ], [ 5, 5 ], [ 8, 10 ], [ 15, 23 ], [ 24, 24 ], [ 25, 25 ] ]