Какой алгоритм лучше использовать для определения, содержится ли весь диапазон чисел внутри другого диапазона?

Как можно эффективно сравнить и вернуть два совпадающих диапазона из заданной очереди диапазонов, где каждый диапазон представлен в виде массива пар чисел в порядке прихода, учитывая, что если один диапазон содержит другой, нужно вернуть соответствующие пары чисел (а, d) или (b, a)?
  • 26 мая 2024 г. 19:01
Ответы на вопрос 2
Для определения, содержится ли весь диапазон чисел внутри другого диапазона, лучше всего использовать следующий алгоритм:

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]]
Похожие вопросы