当前位置: 首页 > 面试题库 >

将一维数组迭代为二维数组

庞元青
2023-03-14
问题内容

我有,

int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, index = 0;

如图所示这里,我们创建一个从原点的二维之一。但是,如何迭代oneDim内部,for (index = 0; index < 10; index++)以便可以在 其中 创建 列索引*行索引 而又不 创建新 索引 呢?我希望将其索引打印到二维数组
(2x5) 时看起来像这样: __
*

0,0
0,1
1,0
1,1
2,0
2,1
3,0
3,1
4,0
4,1

我认为这里的主要问题是获取 列索引行索引 而没有创建二维 索引 。是不是


问题答案:

如果要以行为主的顺序,给定row rowIndex,column
columnIndex并且伪造(缺乏更好的术语)带有numberOfColumns列的二维数组,则公式为

rowIndex * numberOfColumns + columnIndex.

如果要以行为主的顺序,给定row rowIndex,column
columnIndex和伪造(缺少更好的术语)带有numberOfRow行的二维数组,则公式为

columnIndex * numberOfRows + rowIndex.

因此,假设行顺序为:

int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int rows = 2;
int columns = 5;
for (int row = 0; row < rows; row++) {
    for (int column = 0; column < columns; column++) {
        System.out.println(row + ", " + column + ": " + oneDim[row * columns + column]);
    }
}

输出:

0, 0: 1
0, 1: 2
0, 2: 3
0, 3: 4
0, 4: 5
1, 0: 6
1, 1: 7
1, 2: 8
1, 3: 9
1, 4: 10

并且如果您坚持使用单循环进行索引for(假设行优先),则所需的公式如下:

int column = index % numberOfColumns;
int row = (index - column) / numberOfColumns;

如果您使用的是列优先顺序,则所需的公式如下:

int row = index % numberOfRows;
int column = (index - row) / numberOfRows;

所以,

int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int rows = 2;
int columns = 5;
for(int index = 0; index < 10; index++) {
    int column = index % columns;
    int row = (index - column) / columns;
    System.out.println(row + ", " + column + ": " + oneDim[index]);
}

将输出

0, 0: 1
0, 1: 2
0, 2: 3
0, 3: 4
0, 4: 5
1, 0: 6
1, 1: 7
1, 2: 8
1, 3: 9
1, 4: 10

如预期的那样。



 类似资料:
  • 问题内容: 我已经有了用于将一维二维转换为一维二维的代码,但是我不知道如何将其转换。这是我的代码: 问题答案: 您正在寻找类似的东西: 与以下内容相同: 但试图帮助进一步解释这个概念。

  • 问题内容: 假设您具有以下数组: 您将如何将其转换为XML字符串,使其看起来像: 一种方法是通过类似如下的递归方法: 我正在寻找一种使用迭代的方法。 问题答案:

  • 问题内容: 我想通过指定2D数组中的列数将一维数组转换为二维数组。可能会像这样工作: numpy是否具有与我的虚构函数“ vec2matrix”相似的功能?(我知道您可以像2D数组一样索引1D数组,但这不是我拥有的代码中的选项- 我需要进行此转换。) 问题答案: 您要阵列。 其中,根据输入数组的大小推断新维的大小。

  • 本文向大家介绍将二维数组转为一维数组的2种方法,包括了将二维数组转为一维数组的2种方法的使用技巧和注意事项,需要的朋友参考一下 如何将下面的二维数组转为一维数组。 第一种方法: 第二种方法: 以上两种解法print_r($names);后的结果为: 注意:array_column();可以有第三个参数,如 $n = array_column($msg, 'name', 'id'); print_r

  • 问题内容: 我有这种数组 我需要将其转换为一维数组。我怎样才能做到这一点? 例如这样 任何内置函数的php均可用于此数组转换? 问题答案: 对于您有限的用例,可以这样做: 当子数组对此有很多条目时,可以将其更一般化:

  • 定义为一维数组,定义为二维数组,但这一行为是两个夜晚。原因是什么? 以及该代码的输出: