Как можно эффективно сравнить и вернуть два совпадающих диапазона из заданной очереди диапазонов, где каждый диапазон представлен в виде массива пар чисел в порядке прихода, учитывая, что если один диапазон содержит другой, нужно вернуть соответствующие пары чисел (а, d) или (b, a)?
Для определения, содержится ли весь диапазон чисел внутри другого диапазона, лучше всего использовать следующий алгоритм: 1. Сравнить начальные значения (a и c) обоих диапазонов. Если значение a внутри первого диапазона больше или равно значению c второго диапазона, то первый диапазон не содержится внутри второго. 2. Сравнить конечные значения (b и d) обоих диапазонов. Если значение b внутри первого диапазона меньше или равно значению d второго диапазона, то первый диапазон не содержится внутри второго. 3. Если оба условия выполнены, то весь диапазон первого числа содержится внутри диапазона второго числа. Чтобы эффективно сравнить и вернуть два совпадающих диапазона из заданной очереди диапазонов, можно использовать следующий алгоритм: 1. Пройти по всем диапазонам в очереди и для каждого диапазона сравнить его c другими диапазонами. 2. Если диапазон содержится внутри другого, сохранить пару чисел из каждого диапазона. 3. Вернуть сохраненные пары чисел. Этот алгоритм выполнит сравнение всех возможных комбинаций диапазонов в очереди и вернет все совпадающие диапазоны в нужном формате.
Задачу не совсем понял. Но вот как понял
const testArray = [[25, 40], [18, 18], [18, 60], [19, 47]]; for (let i = 0; i < testArray.length; i++) { for (let j = 0; j < testArray.length; j++) { if (i === j) continue; if (testArray[i][0] >= testArray[j][0] && testArray[i][1] <= testArray[j][1]) console.log(`[[${testArray[i]}], [${testArray[j]}]]`); } }
Ответ:
[[25,40], [18,60]]
[[25,40], [19,47]]
[[18,18], [18,60]]
[[19,47], [18,60]]