首页 > 解决方案 > 如何从给定列表生成 n 个大小的列表的列表

问题描述

假设我们有一个列表,

var l = [50, 55, 56, 57, 58, 60]

和一个随机数n

我需要创建一个返回所有可能的长度列表的函数n

如果n = 3,

[50,55,57],[50,55,58],[50,55,60],[50,57,58],[50,57,60],[50,58,60],[55,57,58],[55,57,60],[55,58,60],[57,58,60]

编辑

我无法添加完整的输出数组,因为我不知道如何生成它。

标签: javascriptarrays

解决方案


假设n小于输入数组的大小,您可以这样做:

var soln = []
function generateListsFromSize(array, n, offset=0, current=[]) {
   if (current.length == n){
     soln.push(current.map(elem => elem))
     return
   } 

   for (var i=offset; i < array.length; i++) {
      current.push(array[i]);
      generateListsFromSize(array, n, i + 1, current);
      current.pop();
   }
}

generateListsFromSize([50, 55, 57, 58, 60], 3)
console.log(soln)

这个想法是维护一个数组,在这种情况下,并通过回溯current尝试所有不同的场景。


推荐阅读