当前位置: 首页 > 面试题库 >

在数组中找到所有可能的子集组合吗?

冀弘厚
2023-03-14
问题内容

我需要获取数组的所有可能的子集,其中至少要包含2个项目,而最大未知数。有人可以帮助我一点吗?

说我有这个…

[1,2,3]

…我怎么得到这个?

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

问题答案:

窃取此JavaScript组合生成器后,我添加了一个参数以提供最小长度,从而,

var combine = function(a, min) {
    var fn = function(n, src, got, all) {
        if (n == 0) {
            if (got.length > 0) {
                all[all.length] = got;
            }
            return;
        }
        for (var j = 0; j < src.length; j++) {
            fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);
        }
        return;
    }
    var all = [];
    for (var i = min; i < a.length; i++) {
        fn(i, a, [], all);
    }
    all.push(a);
    return all;
}

要使用,提供一个数组以及所需的最小子集长度,

var subsets = combine([1, 2, 3], 2);

输出是

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


 类似资料:
  • 假设数组是,现在获取此数组的所有子数组。对于每个子数组,在该子数组中找到最小值,也找到该子数组中的项目之和。最后添加所有这些值。输入无法按我想要的所有可能的子数组进行排序。 例子: 可能的子阵列包括: 最后,将所有这些值相加,得到结果=1 3 6 4 10 9=33。 约束:数组元素的范围从1到1000\u 000\u 000。数组大小从1到100\u 000。将输出作为模块7 1000\u 00

  • 问题内容: 当我尝试做这样的事情时,我意识到我真的需要上大学! 无论如何,我都有一个字符串数组(275),我需要遍历它们并用Java创建所有可能对的字符串。 我一直在学习递归,但是我找不到答案。 问题答案: 如果对和不同,请执行以下操作: 如果没有,请执行以下操作: 请注意,我假设数组包含唯一的字符串!

  • 问题内容: 我有一个字符数组c [] [],每个索引都有不同的映射。例如: 我需要以字符串形式返回此数组的所有可能字符组合。也就是说,对于上述字符数组,我应该返回:“ ag”,“ ah”,“ ai”,“ bg”,“ bh”,“ bi”,“ cg”,“ ch”,“ ci”等对于上面只有两件事的字符数组,这样做很容易,但是如果有更多的数组,那么我不知道该怎么办…这就是我要大家提供的帮助!:) 问题答案

  • 我有一个数字数组,现在我必须通过生成给定数组的所有可能子数组并应用一些条件来找到元素之和。 条件是,对于每个子阵列,获取最小值,并找到其中的元素总数,然后将两者相乘(最小值*总数)。最后,将所有子阵列的所有这些相乘值相加。 以下是问题陈述: 使用下面的公式找到所有可能的子数组的总和: 和(左,右)=(最小的arr[i]) * (∑ arr[i]),其中i的范围从左到右。 例子: 子数组是:[sta

  • 问题内容: 输入是一个长度为’n’的数组。我需要生成数组元素的所有可能组合,包括输入数组中元素较少的所有组合。 随着重复,所以 .. 我已经尝试过这样的事情: 它正在生成无重复的组合…因此我需要以某种方式进行修改。 问题答案: 在递归查询中,将删除迭代中使用的搜索表中的术语,然后对其余记录重复查询。在您的情况下,这意味着一旦处理完第一个数组元素(“ A”),就不再可用于数组元素的进一步排列。为了重

  • 假设我有一个数据集: 我使用: 屈服: 我想使用这三行创建不同的组合,为每个组合形成一个数据集。 组合的示例如下: 另一个是: 第三种可能的组合如下: 最后: PS:在前面的示例中,每个组合(一个数据集)至少有两行, 如何在JAVA中实现这一点?非常感谢。