实现CSS多栏布局均衡填充的算法是什么?
数学公式:给定一个正数列表(即要排列的项目的高度),将它们按顺序分布到 N 个列表中,使得总和最大的列表与总和最小的列表之间的差值是所有可能安排中的最小值。
最佳答案
先将列表转化为累加,然后将最后一个元素除以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 列。
其余项目放在最后一列。
关于在 N 列中均匀分布文本的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52991833/