Java - 从中​​间开始遍历二维数组

标签 java arrays

我在二维数组上有这个完全正常的循环。

for(int i = 0; i<array.length; i++){
    for(int j = 0; i<array.length; j++){
        array[i][j].doSomething();
    }
}

我想遍历这个二维数组,从中间开始。例如,如果数组的两个维度的长度均为 100,我希望它像这样遍历它:

array[50][50] //middle of array
array[49][50] //x-1
array[50][49] //y-1
array[51][50] //x+1
array[50][51] //y+1
array[48][50] //x-2
array[49][49] //x-1 and y-1
array[50][48] //y-2
array[51][49] //x+1 and y-1
array[52][50] //x+2
array[51][51] //x+1 and y+1
array[50][52] //y+2
array[49][51] //x-1 and y+1
etc.

我花了几个小时在互联网上寻找有效的方法和解决方案,但我还没有找到很好的答案。谁知道怎么做?

最佳答案

这不会为您提供任何 Java 代码,而是提供有关如何解决该问题的想法。

在一张纸上画出尺寸小得多的数组的网格,并在每个单元格中画出应该到达单元格的数字。

[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][1][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]

[ ][ ][ ][ ][ ]
[ ][ ][3][ ][ ]
[ ][2][1][4][ ]
[ ][ ][5][ ][ ]
[ ][ ][ ][ ][ ]

[ ][ ][8][ ][ ]
[ ][7][3][9][ ]
[6][2][1][4][A]
[ ][D][5][B][ ]
[ ][ ][C][ ][ ]

[ ][F][8][G][ ]
[E][7][3][9][H]
[6][2][1][4][A]
[L][D][5][B][I]
[ ][K][C][J][ ]

[M][F][8][G][N]
[E][7][3][9][H]
[6][2][1][4][A]
[L][D][5][B][I]
[P][K][C][J][O]

清晰可见的是“蜗牛”图案。您总是填充先前填充的单元格的外部相邻单元格。

忽略第一次迭代填充的字段的外边界

1 cell - then
4 cells
8 cells
12 cells
... +4 cells

就循环而言,您不应该使用 (i,j) 进行循环,这两者都反射(reflect)了数组中的索引。而是遍历 round,然后打印该特定回合中的各个单元格。在回合 X 中,您从字段 arrayLength/2 - X 开始。

关于Java - 从中​​间开始遍历二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34556387/

相关文章:

java - 在android项目中添加外部依赖jar

java - 如何混合使用 Guice 和 Jersey 注入(inject)?

java - 公历添加日期和打印

Javascript检查表格中的上升趋势

C++ 嵌套类实例

java - LeetCode 的二和问题 : Brute force solution approach not working?

java - Hibernate List<Object[]> 到特定对象

Java访问pci-modem

javascript - JSON 数组转换为 HTML 选择选项

arrays - 如何将 JSON 数组转换为列和行