Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将一个二维数组转换为两个一维数组_C#_Java_Arrays_Algorithm - Fatal编程技术网

C# 将一个二维数组转换为两个一维数组

C# 将一个二维数组转换为两个一维数组,c#,java,arrays,algorithm,C#,Java,Arrays,Algorithm,你可能会对我的要求感到奇怪,但这是真的,将1二维数组转换为2一维数组 这就是我的老师问的问题,他说无论谁回答这个(我认为,棘手的)问题,他都会给一个完美的分数。我很乐意将任何二维或n维数组转换为一维数组。但他说的是2,所以我认为这一定与第二个数组有关。而且,他没有告诉我什么类型的数组(int、String或object),所以我假设它必须使用任何类型的二维数组 如果这里没有人知道他想要什么,我会回答他:转换成一维数组,并保留第二个null(或者让它没有元素)。但我不认为这是一个很好的回答这样一个

你可能会对我的要求感到奇怪,但这是真的,将1
二维数组
转换为2
一维数组

这就是我的老师问的问题,他说无论谁回答这个(我认为,棘手的)问题,他都会给一个完美的分数。我很乐意将任何二维或n维数组转换为一维数组。但他说的是2,所以我认为这一定与第二个数组有关。而且,他没有告诉我什么类型的数组(int、String或object),所以我假设它必须使用任何类型的二维数组

如果这里没有人知道他想要什么,我会回答他:转换成一维数组,并保留第二个null(或者让它没有元素)。但我不认为这是一个很好的回答这样一个棘手的问题

编辑:这是我老师的问题,一个字一个字地问(他只是在课后用声音提问,而不是在课本上,作为一个附加问题(附带……一个不错的附加奖励)):给一个
二维数组
,将其转换成二维数组

我不知道Java和C#中的[][]是否考虑了
2维数组
,但C#确实有[],也就是2维数组。我们正在研究计算机算法,没有目标IDE或语言


EDIT2:我给他发了电子邮件,他拒绝提供更多信息(他说如果我的信息比他们多,对其他人不公平),他也没有对锯齿阵列的想法发表任何评论。他回答中唯一有用的一点是:让[][]被认为是
2维数组

我要咬一口。通过一致地读写,可以将整个二维数组展平为两个一维数组中的第一个。即,在第一个数组中依次存储第1行、第2行等。无论何时移动到下一行,都将下一个单元格(第一个一维数组的)的索引存储在第二个一维数组中,该数组实际上将成为一个行索引表


正如乔恩·斯基特(Jon Skeet)在上文中所说,这不是一个非常明确的问题;也许有了明确的信息,我们可以更好地帮助您。

我想您希望将二维数组(键入的
相关类型[,]
)转换为两个数组(键入的
SomeTypeA[]
SomeTypeB[]
),而不丢失任何信息

这不是很难:
让第一个数组的类型为
relevantype[]
,第二个数组的类型为
int[]
,将二维数组的内容复制到第一个数组中,将其第一个索引复制到第二个数组中,就完成了。

如果我正确理解了您的问题

这很容易

这只是一个算法问题。。不是特定于编程语言的

您可以这样做:

  • 一个数组保存这些值
  • 第二个数组保存密钥
  • 尝试在第二个数组中找到解决方法,以了解您拥有的密钥

    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上

    问题是您无法立即从内存访问数据。。这就是为什么会有二维数组

    另一种方式:

  • 将值保留在数组1中
  • 将键保留在第二个数组中,如以下示例中所示:

    array1: value1 value2 value3 value4 value5
    array2: 0,0    0,1    1,0    1,1    2,0
    
  • 有很多算法,但我认为你不会发现比二维数组更好的


    当你照顾他们时,你的表现会变差。。ofc。。除非你把它们放在哈希表中。。散列0,0,并作为键添加到哈希表中,然后将指定的值添加到该键。然后您将查找键“0,0”…

    按行主顺序或列主顺序展平二维数组,并将其存储在一个一维数组中。将数组的形状
    {n,m}
    存储在另一个一维整数数组中。给定二维值数组中元素的索引,可以使用形状计算一维值数组中的索引


    这两种表示是同构的,都允许在恒定时间内查找值。它也类似于在内存中表示二维数组的方式

    考虑到Java实际上没有二维数组(它有数组的数组),很难给出一个好的答案。有一个精确的问题真的很有帮助——最好是有样本输入和预期输出。我认为这个问题没有必要像“没有很好地说明”那样“棘手”。这听起来更像是一个横向思维难题,而不是一个编码问题。i、 e.一旦你得到一些额外的信息,他会使用什么样的技巧使他所说的话有意义。你能发布(或链接到)老师问题的确切措辞吗?@W.N:那么我担心这个问题的措辞太糟糕,没有一个有意义的明确答案。下次向你的老师询问更多细节:)一个想法是在一个数组中逐行保存,在第二列中逐列保存,一些在两个过程(第一个过程水平,第二个过程垂直)中工作的成像算法可能有用处,我认为这比保存行开始的索引更符合逻辑(因为您可以非常轻松地计算它们)。可能值得注意的是,2D数组不需要第二个数组(因为行长度是恒定的),但锯齿状数组需要第二个数组。您不需要行索引数组,因为可以为2D数组计算第二个数组(它不是锯齿状的)我编辑了我的问题以添加更多信息。我认为在您的解决方案中不需要第二个数组,因为我们可以通过数学运算符访问
    1维数组。只需阅读此问题的第一条注释。嘿,也许您是对的!例如:
    a[0]=new int[]{1,6,9}
    a[1]=new int[]{1}
    ,我们必须使用第二个数组f