по имеющейся информации sort использует алгоритм quick sort
getCombination([7, 8, 3, 4, 5, 6, 1, 2], 9); // [1, 2, 6], [1, 3, 5], [1, 8]
function getCombination1(arr, n) {
const sortedArr = arr.filter(x => x <= n).sort((a, b) => a - b);
const results = [];
const part = [];
let sum = 0;
if (!sortedArr.length || sortedArr[0] > n) {
return results;
}
sortedArr.push(n + 1);
const mapFn = i => sortedArr[i];
for(let i = 0; i < sortedArr.length; i++) {
sum += sortedArr[i];
if (sum > n) {
const last = part.pop();
sum = sum - sortedArr[i] - sortedArr[last];
i = last;
} else {
part.push(i);
if (sum === n) {
results.push(part.map(mapFn));
}
}
}
return results;
}
надо было в одном файле это делать, все компоненты там объединять
может быть нужно сделать до 7 поворотов.не более 4
судя по прошлым задачам от автора - это какой-то курс и они сейчас bfs проходят
но оказывается надо еще сделать штуку которая выводит последовательность
если сделать, например, так:
то кроме вышеупомянутых ререндеров, у тебя было бы ещё N ререндеров компонента InView. А так они уехали в Position и потому избежали лишнего ререндера. Вывод: старайся весь элемент списка обернуть в memo-компонент.