Мне нужно создать массив всех возможных комбинаций элементов массива, таких как перестановка, вопрос о структуре данных с широким разбросом.Чтобы узнать больше о вопросе, можете проверить здесь: случайные хаки , geeksforgeeks и мир математики .
Примечание: не хочучтобы использовать любую библиотеку JS, просто структура данных здесь
Вопрос прост, массив предоставлен и ему нужно найти все возможные комбинации, такие как:
arr = [1,2,3];
combination = [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]];
// combination.length is factorial of arr.length
Для достижения этой цели у меня былосоздал глобальную переменную для хранения комбинаций, нужно сделать это без глобальной переменной , я не могу этого сделать, может кто-нибудь помочь мне разобраться в этом, вот мой код:
let ans = []; // Global variable to store combinations
function permute(arr) {
let l = arguments[1] || 0,
r = arguments[2] || arr.length-1;
if (l == r) {
let a = [];
a.push(...arr); // To overcome reference problem here.
ans.push(a);
}
else {
for (let i = l; i <= r; i++) {
[arr[l], arr[i]] = [arr[i], arr[l]]; // Swap with help of new destructuring
permute(arr, l+1, r);
[arr[l], arr[i]] = [arr[i], arr[l]]; // Swap with help of new destructuring
}
}
return ans;
}
console.log(permute([1,2,3,4]));
console.log(permute([1,2,3]));
console.log(permute([1,2,3,4,5]));
Спасибо, что попробовали и помогли.