[英]Convert ONE two-dimensional array into TWO one-dimensional arrays
您可能对我要问的事情感到很奇怪,但是的确,将1 two-dimensional array
转换为2个 one-dimensional arrays
。
这是我的老师问的,他说他将为回答这个(我认为是棘手的)问题的人提供一个完美的答案。 我很乐意将任何二维或n维数组转换为一个一维数组。 但是他说2,所以我认为第二个数组一定有关系。 而且,他没有告诉您什么类型的数组(int,String或object),因此我认为必须使用任何一种二维数组来完成。
如果没有人知道他想要什么,这就是我要回答的问题:转换为一维数组,并保留第二个null(或使其不包含任何元素)。 但是对于这样一个棘手的问题,我认为这不是一个很好的答案。
编辑:这是我的老师的问题,文字的字(他只是要求在语音会议结束时,而不是在教科书,作为奖金的问题(与...一个不错的奖金奖励)):给定一个 2-dimensional array
,将其转换成两个 1-dimensional array
秒。
我不知道Java和C#中的[] []是否考虑2-dimensional array
,但是C#确实具有[,],即二维数组。 我们正在研究没有目标IDE或语言的计算机算法。
EDIT2:我给他发了电子邮件,他拒绝提供其他信息(他说如果我比他们有更多信息,对其他人不公平),并且他没有对锯齿状阵列的想法发表任何评论。 他的回答中唯一有用的东西:让[] []被认为2-dimensional array
。
我咬 通过简单地一致地读取和写入,可以将整个二维数组展平为两个一维数组中的第一个。 即在第一个数组中依次存储第1行然后第2行,依此类推。 每当您移至下一行时,都将下一个单元格(第一个一维数组的索引)存储在第二个一维数组中,该数组实际上将成为行索引表。
正如乔恩·斯基特(Jon Skeet)上文所述,这不是一个非常明确的问题; 也许有了明确的信息,我们可以更好地为您提供帮助。
如果我能正确理解您的问题
M8很简单...
这只是一个算法问题..不是特定于编程语言的...
您可以这样做:
尝试在第二个数组中找到一种解决方法,以了解您拥有哪些键。
For example: array_1: v0 v1 v2 null v3 v4 v5 null v6 v7 v8 null array_2: 0 1 2 newR 0 1 2 newR 0 1 2 newR
您也可以用一个数组表示它...但是您需要一种特定的算法来确定何时位于矩阵的Y上。
问题是您不会立即从内存访问数据。这就是为什么存在二维数组的原因
其它的办法:
将键作为字符串保留在第二个数组中,如以下示例所示:
array1: value1 value2 value3 value4 value5 array2: 0,0 0,1 1,0 1,1 2,0
有很多算法,但我不认为您会发现比二维数组更好的算法...
当您照看它们时,除非将它们保留在哈希表中,否则它们将具有较低的性能。哈希0,0并作为键添加到哈希表中,然后将指定的值添加到该键中。 那么您将寻找键“ 0,0” ...
我猜您想将2维数组(类型为RelevantType[,]
)转换为2个数组(类型为SomeTypeA[]
和SomeTypeB[]
)而不会丢失任何信息?
这不是很困难:让第一个数组的类型为RelevantType[]
,第二个数组的类型为int[]
,将二维数组的内容复制到第一个数组中,并将其第一个索引复制到第二个数组中,然后重做。
按行优先或列优先顺序展平二维数组,将其存储在一维数组中。 将数组的形状{n, m}
存储在另一个1-d整数数组中。 给定2维值数组中元素的索引,您可以使用形状来计算1维值数组中的索引。
这两种表示是同构的,并且都允许在恒定时间内查找值。 这也类似于二维数组在内存中的表示方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.