【发布时间】:2018-10-12 16:08:37
【问题描述】:
我想在 Java 中完全反转二维数组的 x 和 y 坐标。此外,它可以反转具有不同长度的二维数组。 例如: 数组[行][列] = 数组[列][行];
【问题讨论】:
-
我认为这将被称为换位。 stackoverflow.com/questions/16737298/…
-
谢谢,这是一个转置但是你知道Java中的解决方案吗?
我想在 Java 中完全反转二维数组的 x 和 y 坐标。此外,它可以反转具有不同长度的二维数组。 例如: 数组[行][列] = 数组[列][行];
【问题讨论】:
只有在两个维度相等时才能进行此操作。如果是这样,遍历每一行,然后交换所有大于该行的列位置。
所以,假设你有一个 3x3 数组,你想交换:
第一个循环: 0,1 与 1,0 0,2 与 2,0
第二个循环: 1,2 与 2,1
第三个循环: 无事可做
要循环使用for。要获取给定数组的长度,请使用array.length。要交换,请创建一个临时变量。例如:
int x = array[c][r];
array[c][r] = array[r][c];
array[r][c] = x;
这将交换 [c,r] 和 [r,c]。
【讨论】:
[c] [r] 处的每个元素分配给新数组的索引[r] [c] 处的元素
你可以使用类似的东西
public static int[][] transpose(int[][] matrix)
{
int m = matrix.length;
int n = matrix[0].length;
int[][] transposedMatrix = new int[n][m];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
transposedMatrix[i][j] = matrix[j][i];
}
}
return transposedMatrix;
}
【讨论】: