我想知道在二维数组中,这些循环的区别:
for (int r = row - 1, c = column - 1; r >= 0 && c >= 0; r--, c--) {
...
}
for(int r=row-1;r>=0;r--){
for(int c=column-1;c>=0;c--){
...
}
}
我想您是要求翻译单层循环和嵌套循环之间的区别。区别在于,单层循环将迭代2D数组的对角线,而嵌套循环则将迭代数组的每个索引。例如,如果有6行4列,则:
for (int r = row - 1, c = column - 1; r >= 0 && c >= 0; r--, c--) {
System.out.println(r + " " + c);
}
将产生以下结果:
5 3
4 2
3 1
2 0
嵌套循环
for(int r=row-1; r>=0; r--) {
for(int c=column-1; c>=0; c--) {
System.out.println(r + " " + c);
}
}
5 3
5 2
5 1
5 0
4 3
4 2
4 1
4 0
3 3
3 2
3 1
3 0
2 3
2 2
2 1
2 0
1 3
1 2
1 1
1 0
0 3
0 2
0 1
0 0
第一个迭代循环次数为 n
,其中 n
是 row
和 column
中较小的那个。第二个迭代循环次数为 m
,其中 m
是 row
* column
。也就是说
Math.min(row, column)
并且
row * column