给定唯一的正整数的未排序列表,请将其最小排序为2D矩阵。输入列表被保证是复合长度,这意味着在输出矩阵不一定是正方形的,但是大小n x m
与n,m > 1
。
“最小排序”在此表示以下含义:
- 按升序对列表进行排序。
- 尽可能压缩输出矩阵-最小化矩阵尺寸的总和(例如,对于
20
输入元素作为输入,需要a5x4
或4x5
输出矩阵,而不是a2x10
)。 - 从排序列表中的第一个元素开始,将排序的数字尽量压缩到矩阵的左上角。
- 可以将其视为对列表进行排序,然后将其沿矩阵的对角线(从左上角开始)进行切片。
例子:
对于输入,1..20
输出为5x4或4x5矩阵,如下所示:
1 2 4 7 11
3 5 8 12 15
6 9 13 16 18
10 14 17 19 20
1 2 4 7
3 5 8 11
6 9 12 15
10 13 16 18
14 17 19 20
输入[3, 5, 12, 9, 6, 11]
输出为2x3或3x2,如下所示
3 5 9
6 11 12
3 5
6 9
11 12
对于input [14, 20, 200, 33, 12, 1, 7, 99, 58]
,输出为3x3,如下所示
1 7 14
12 20 58
33 99 200
对于输入1..10
,输出应为2x5或5x2,如下所示
1 2 4 6 8
3 5 7 9 10
1 2
3 4
5 6
7 8
9 10
输入[5, 9, 33, 65, 12, 7, 80, 42, 48, 30, 11, 57, 69, 92, 91]
输出为5x3或3x5,如下所示
5 7 11 33 57
9 12 42 65 80
30 48 69 91 92
5 7 11
9 12 33
30 42 57
48 65 80
69 91 92
规则
1
哦,哇,自线性代数以来我还没见过这个词;容易被忽视。我很抱歉。
—
魔术章鱼缸
@LuisMendo添加了
—
AdmBorkBork
15
元素测试用例。