给定一个2D整数数组,让我们按块对它的行和列进行排序。这意味着您只需要对给定的行或列进行排序,而是将对其进行排序所需的转换应用于2D数组中的所有其他行或列。
规则
- 输入将是一个2D整数数组和一个1索引整数。如果数字为正,则此整数将表示要排序的行,如果数字为负(或相反,则为整数)将表示要排序的列。示例:给定
4x3
(行x列)数组,您可以使用-2
参数或参数对第三行进行3
。第二个参数永远不会为零,其绝对值也不会大于数组的相应维数。 - 输出还将是一个2D整数数组,并应用了所需的转换来对给定的行或列进行排序。另外,您也可以将阵列写入STDOUT。
- 输出数组将具有指定的行或列,以升序排列。请注意,当您需要连续交换两个数字时,将交换数字所在的整个列。当您需要在一列中交换两个数字时,数字所在的整行将被交换。
- 如果相同的数字在要排序的行/列中多次出现,则根据交换值的方式可能会有几种解决方案,只需对要交换的其余行/列进行相应处理。
例子
Positive indices for rows and negative indices for columns
[5 8 7 6 [1 3 2 4
1 3 2 4 order by -3 (3rd column) --> 9 6 3 0
9 6 3 0] 5 8 7 6]
[5 8 7 6 [9 6 3 0
1 3 2 4 order by -4 (4th column) --> 1 3 2 4
9 6 3 0] 5 8 7 6]
[5 8 7 6 [5 7 8 6
1 3 2 4 order by 2 (2nd row) --> 1 2 3 4
9 6 3 0] 9 3 6 0]
[5 8 7 6 [6 7 8 5
1 3 2 4 order by 3 (3rd row) --> 4 2 3 1
9 6 3 0] 0 3 6 9]
[1 2 [1 2 [3 2
3 2] order by -2 (2nd column) --> 3 2] or 1 2] (both are valid)
[7 5 9 7 [5 7 7 9 [5 7 7 9
1 3 2 4 order by 1 (1st row) --> 3 1 4 2 or 3 4 1 2
9 6 3 0] 6 9 0 3] 6 0 9 3]
这是代码高尔夫球,因此每种语言的最短代码可能会胜出!