你可能会对我的要求感到奇怪,但这是真的,将1 two-dimensional array
转换为 2 one-dimensional arrays
。
这就是我的老师问的问题,他说他会给那些回答这个(我认为是棘手的)问题的人提供一个完美的观点。我很乐意将任何2维或n维数组转换为一维数组。但他说2,所以我认为必须与第二阵列有关。而且,他没有说出什么类型的数组(int,String或object),所以我认为必须使用任何类型的二维数组。
如果没有人在这里找出他想要的东西,我将回答他:转换为1维数组,并留下第二个空(或让它没有元素)。但我认为这个棘手的问题不是一个好的答案。
编辑:这是我的老师问题,逐字逐句(他只是在会话结束时用语音问,而不是在教科书中,作为奖励问题(用......)一个很好的奖励奖励)):给定 a 2-dimensional array
,将其转换为两个 1-dimensional array
。
我不知道Java和C#中的[] []是否考虑2-dimensional array
,但C#确实有[,],这是二维数组。我们正在研究计算机算法,没有目标IDE或语言。
EDIT2:我给他发了电子邮件,他拒绝透露更多信息(他说如果我的信息比他们多,那对他人不公平),并且他没有给出任何关于锯齿的评论阵列的想法。他回答中唯一有用的事情:让[] []被视为2-dimensional array
。
答案 0 :(得分:6)
正如Jon Skeet所说,这不是一个非常明确的问题;也许有明确的信息,我们可以更好地帮助你。
答案 1 :(得分:2)
如果我理解你的问题
很容易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
有很多算法,但我认为你不会发现比二维数组更好......
当你照顾它们时,你会有更少的性能.. ofc ..除非你把它们保存在哈希表中。哈希0,0并在哈希表中添加为键并将指定值添加到该键。然后你会找到关键的“0,0”...
答案 2 :(得分:1)
我想您想要将2维数组(键入RelevantType[,]
)转换为2个数组(键入SomeTypeA[]
和SomeTypeB[]
)而不会丢失任何信息?
这不是很难:
让第一个数组为RelevantType[]
类型,第二个类型为int[]
类型,将第二个数组的内容复制到第一个数组中,将第一个数组复制到第二个数组中,然后将其复制到第二个数组中完成。
答案 3 :(得分:1)
以行主要或列主要顺序展平2-d数组,将其存储在1-d数组之一中。将数组的形状{n, m}
存储在另一个1-d整数数组中。给定2-d值数组中元素的索引,您可以使用该形状计算1-d值数组中的索引。
这两个表示是同构的,并且都允许在恒定时间内查找值。它也类似于2-d数组在内存中的表示方式。