当前位置: 首页 > 知识库问答 >
问题:

是否有一种“命名”算法用于按存储桶大小对阵列进行分区

贺桐
2023-03-14

我想获取一个输入数组和一组可能的大小,并将数组划分为子数组,每个子数组都有一个最大可能的bucket大小的计数,该计数小于剩余的项目数。

所以给定输入数组...

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

还有尺寸。。。

[10, 5, 3, 2, 1]

它将返回一个数组,如。。。

[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13], [14]]

首先是分区10,然后是分区3,然后是分区1。

我可以使用while循环等非常笨拙的方法来实现这一点,但我想知道这种算法是否有某种名称,我可以研究一些更优雅的实现方法

共有2个答案

穆丁雨
2023-03-14

您也可以在单循环中实现这一点。类似这样的东西是JS:

js prettyprint-override">var inputArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
var sizeArray = [10, 3, 5, 2, 1];
var outputArray = [];

sizeArray.sort(function(a, b) { return b-a}); // Sort array in decreasing order

while(sizeArray.length > 0 && inputArray.length > 0){
  var m = sizeArray[0];
  sizeArray = sizeArray.slice(1); // Pop the first element from Size Array
  if(m <= inputArray.length){
    outputArray.push(inputArray.slice(0, m)); // Extract first m elements from inputArray if its size is greater than m
    inputArray = inputArray.slice(m);
  }
}
console.log(outputArray);
隗高旻
2023-03-14

多亏了@anandudavia,我解决了这个问题,而不是作为一个数组分区练习,而是作为一个硬币兑换问题。

我能够用这个函数解决这个问题...(在斯威夫特)

func separate(numberOfItems n: Int, bucketSizes sizes: [Int]) -> [Int] {
    var output = [Int]()
    var remaining = n

    for size in sizes {
        while remaining >= size {
            output.append(size)
            remaining -= size
        }
    }

    return output
}

现在,通过我的大小数组,我可以轻松地解决我正在处理的其余问题:D

 类似资料:
  • 我有一个db表说,在Postgres传给另一个团队,有一个列名说,。现在我试图使用PG指挥官来查询这个列名称上的表。 然后它就回来了 错误:列"first_Name"不存在 不确定我是在做一些愚蠢的事情,还是有解决这个问题的方法,我错过了?

  • 问题内容: 我正在处理大型3D阵列,通常需要以各种方式对其进行切片以进行各种数据分析。一个典型的“立方体”可以达到〜100GB(将来可能会更大) 似乎在python中,大型数据集的典型推荐文件格式是使用HDF5(h5py或pytables)。我的问题是:使用HDF5来存储和分析这些多维数据集,而不是将它们存储在简单的平面二进制文件中,对速度或内存使用有好处吗?HDF5是否更适合表格数据,而不是像我

  • 我已经阅读了很多关于设计分区键和排序键的DynamoDB文档,但我认为我一定缺少一些基本的东西。 如果分区密钥设计不好,那么当单个分区密钥值的数据超过10GB时会发生什么情况? “了解分区行为”部分指出: “单个分区可以容纳大约10 GB的数据” 它如何对单个分区键进行分区? http://docs.aws.amazon.com/amazondynamodb/latest/developergui

  • 我有一个CA提供的jks密钥库,用于对JAR签名。但是,我希望通过HTTPS托管一些内部应用程序,因此需要创建一个SSL证书,以便通过HTTPS加密数据。然而,为了避免浏览器中的不可信证书/未知主机警告,我想知道是否可以使用用于签名JAR的jks密钥库也对我的CSR进行签名,以便创建SSL证书。 到目前为止,我已经设法做到了以下几点: > 使用Java keytool生成证书和私钥对以创建JKS文

  • 问题内容: 例如: 要么 这些名称或破折号有问题吗? 问题答案: 老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法: 它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。 分离班使他们可以重复使用: 该干的惯例是从不重复自己。通过分离or类,我们可以 重用 相同的类: 在第二种方法中-使用分隔符,代码将是: 在像这样的简

  • 问题内容: 我有一个.csv文件,如下所示: 我必须从文件中删除重复的电子邮件(整行)(即,上面示例中包含的行之一)。如何仅在字段1(用逗号分隔)上使用?根据,没有列选项。 我尝试了一些东西,但是没有用。 问题答案: 为了独特 所以逗号是定界符 对于关键字段1 测试结果: