【发布时间】:2021-06-28 11:28:09
【问题描述】:
假设我有一组 n 个坐标 (x, y) 例如 (123, 41), (123, 50), (555, 10), (600, 10)
我想把它转换成一个二维数组,其中:
-
列数等于x坐标的唯一个数
-
行数等于y坐标的唯一个数
-
没有两组坐标完全相同,并且 x 和 y 的值可以是什么也没有限制。
-
一个坐标被放置在相对于所有其他坐标的 x 和 y 的索引处。例如。 (555,10) 具有第二大的 x 坐标 (x=1) 和最小的 y 坐标之一 (y=0),因此它的位置将是 [1][0]
x=0 x=1 x=2 y=0 null (555, 10) (600, 10) y=1 (123, 41) null null y=2 (123, 50) null null
(有 3 个唯一的 x 坐标(123、555、666)和 3 个唯一的 y 坐标(41、50、10)所以数组是 3x3)
如上所述,我可以使用什么算法从一组坐标生成二维数组?我尝试创建自己的,但是当 n 非常大 O(n^2) 时它非常慢。
【问题讨论】:
-
请说明问题的限制条件。 最多可以给多少分?如果
(x, y)是任何有效坐标,那么x或y可以有多大?x和y是否总是小于n其中 n 是要输入的点数? -
@AKSingh 编辑感谢。
-
您应该将
n的范围表示为1 n x 也将小于n就像1 x
标签: algorithm sorting multidimensional-array coordinates