Vấn đề
Hàm JavaScript nhận trong hai mảng, arr1 và arr2 khoảng thời gian tách rời từng cặp và theo thứ tự được sắp xếp.
Một khoảng đóng [a, b] (với a <=b) biểu thị tập hợp các số thực x với a <=x <=b.
Giao điểm của hai khoảng đóng là tập hợp các số thực rỗng hoặc có thể được biểu diễn dưới dạng một khoảng đóng. Ví dụ:giao của [1, 3] và [2, 4] là [2, 3].) Hàm của chúng ta được cho là trả về giao của hai mảng khoảng này.
Ví dụ:nếu đầu vào của hàm là -
const arr1 = [[0,2],[5,10],[13,23],[24,25]]; const arr2 = [[1,5],[8,12],[15,24],[25,26]];
Sau đó, đầu ra phải là -
const output = [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]];
Ví dụ
Mã cho điều này sẽ là -
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)); Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ [ 1, 2 ], [ 5, 5 ], [ 8, 10 ], [ 15, 23 ], [ 24, 24 ], [ 25, 25 ] ]