以下是一行 JavaScript 代码,使用递归方式实现数组的全排列,并支持输出小于数组长度的排列结果:

const permute = arr => arr.reduce((acc, item, i) => acc.concat(permute([...arr.slice(0, i), ...arr.slice(i + 1)]).map(p => [item, ...p])), arr.length ? [] : [[]]);

该代码使用递归方式实现了数组的全排列。首先,使用 reduce 方法对数组进行遍历,对每个元素进行处理。然后,使用 concat 方法将当前元素与剩余元素的全排列进行合并。最后,使用递归方式对剩余元素进行全排列的计算,直到数组长度为 0 时返回空数组。

例如,对于数组 [1, 2, 3],该代码将输出以下所有可能的排列:

[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]

此外,该代码还支持输出小于数组长度的排列结果。例如,对于数组 [1, 2, 3],该代码也将输出以下所有可能的排列:

[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]
[1]
[2]
[3]
[]

该代码简洁高效,可以方便地用于各种需要实现数组全排列的场景。


原文地址: https://www.cveoy.top/t/topic/pD98 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录