写一个关于全排列,全组合的函数
全排列
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function (nums) {
let result = [];
let used = Array.from({ length: nums.length }).fill(false);
function search(collection, used) {
if (collection.length === nums.length) {
result.push(collection);
return;
}
for (let i = 0; i < nums.length; i++) {
if (used[i] === false) {
used[i] = true;
search(collection.concat(nums[i]), used.slice(0));
used[i] = false; // 重置状态
}
}
collection = null;
used = null;
}
search([], used);
return result;
};
全组合: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
var combine = function (n, k) {
let result = [];
function find(collection, from) {
if (collection.length === k) {
result.push(collection);
return;
}
for (let i = from; i <= n; i++) {
find(collection.concat(i), i + 1);
}
}
find([], 1);
return result;
};
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »