用平衡填充实现CSS多列布局的算法是什么?
数学公式:给定一个正数列表(那些将是要排列的物品的高度),按顺序将它们分配到N个列表中,以使总和最大的列表与总和最小的列表之间的差是所有可能安排中的最小值。
答案 0 :(得分:1)
首先将列表转换为累积列表,然后将最后一个元素除以N,以获得IdealColumnSize:
例如:
2, 3, 6, 8, 3, 4, 2
产生累计列表:
2, 5, 11, 19, 22, 26, 28
假设我们要将其分为3。IdealColumnSize为9 1/3。 现在,对于索引1到N-1,选择累积列表中最接近的元素。
最接近9 1/3的是11,因此前三个数字在第1列中。
最接近18 2/3的是19,因此第2列有一个数字。
其余项目放在最后一列。