在这个简单的挑战中,将为您提供L非负整数的输入数组,以及数量b大于0但不超过的长度的bin L。您的代码必须返回一个新数组M,该数组的长度为b,并且已对该数组进行分箱L。用示例最容易解释。
L = [1,0,5,1]然后b = 2返回M = [1,6]。
L = [0,3,7,2,5,1]然后b = 3返回M = [3,9,6]。
到目前为止,如此简单。但是,在这个问题b上并不一定要分开len(L)。在这种情况下,最后一个垃圾箱将只有更少的数字可以组成。
除可能的最后一个垃圾箱外,每个垃圾箱必须具有相同数量的数字,以构成其总数。最后一个垃圾箱所贡献的号码不得超过其他垃圾箱。在其他规则的约束下,最后一个bin必须具有尽可能多的数字。
L = [0,3,7,2,5,1]然后b = 4返回M = [3,9,6,0]。 M = [10,8,0,0]是不可接受的输出,因为第三个bin的名称编号不包含在bin 1和中2。
L = [0,3,7,2,5]然后b = 2返回M = [10,7]。 M = [3, 14]不是可接受的输出,因为最后一个bin会有3贡献的元素,但是第一个只有2。
L = [1,1,1,1,1,1,1]然后b = 3返回M = [3,3,1]。
作为最后一条规则,您的代码必须在线性时间内运行。
您可以使用任何喜欢的语言或库,并且可以假定以您认为方便的任何方式提供了输入。
事实证明,有些输入无法解决。例如[1,1,1,1,1]和b=4。您的代码可以输出任何喜欢的输入。
your code must run in linear time-我会发现任何自然不遵循这种算法的算法