честно сам до конца не понял сути, но судя из математики за 8 класс, то интервальные числа это когда есть отрезок от точки а до точки б и если точки а или б другого отрезка попадают в промежуток между точкой а и б первого отрезка, то объединить эти отрезки... из данного примера ситуация слеудющая есть массив с числами 1 и 3 и следующий массив 2 и 6, так как 2 больше 1 и меньше 3 эти два массива надо объединить(выходит [1, 6], и судя по всему, если будут массив [5, 9] и [4, 7] то и эти массивы надо объединить превратив два массива в один [4, 9], то есть минимальное значение одного массива и максимальное значение второго массива, получается результат их совмещения. то есть ситуация выходит такая что оба элемента массива надо проверить с соседним элементом массива, на вероятность того что элемент одного массива надо проверить меньше одного и большего другого и на оборот, в случае если все ок, совмещаем, если нет оставляем как есть проверяем следующий
let arr = [[1,3], [2,6], [8,10], [15,18]] for(let i = 1; i < arr.length; i++) { let prev = arr[i - 1], cur = arr[i] if(prev[1] >= cur[0]) { arr.splice(--i, 2, [ prev[0], cur[1] ]) } } console.log(arr)
или так const arr = [ [1, 3], [2, 6], [8, 10], [15, 18] ]; const result = arr.reduce((acc, v) => { if (acc.length === 0) return [v]; const [start, end] = v; const [prevStart, prevEnd] = acc[acc.length - 1]; if (prevEnd >= start) { acc[acc.length - 1][1] = end; } else { acc.push(v); } return acc; }, []); console.log(result);
не-а там добавили условие еще, я тоже так начал делать
Так подойдет? Да в начале не заметил. "use strict"; const arr = [[1, 3], [2, 6], [8, 10], [15, 18]]; const result = arr.reduce((acc, v) => { if (acc.length === 0) return [v]; const [start, end] = v; const [prevStart, prevEnd] = acc[acc.length - 1]; if (prevStart > start) acc[acc.length - 1][0] = start; if (prevEnd >= start) { acc[acc.length - 1][1] = end; } else { acc.push(v); } return acc; }, []); console.log(result);
1. нет 2. кидать код в чистом виде в чат тоже не пойдет
let arr = [[5, 2], [8, 4]];
все равно на let arr = [[5, 9],[4, 7]] не верно
А это валидный массив (тут начало больше конца)?
думаю нет, говорю тут загнался
Обсуждают сегодня