我有一个基于行的多维数组:
/** [row][column]. */
public int[][] tiles;
我想将此数组转换为基于列的数组,如下所示:
/** [column][row]. */
public int[][] tiles;
……但我真的不知道从哪里开始
原文由 Antti Kolehmainen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个基于行的多维数组:
/** [row][column]. */
public int[][] tiles;
我想将此数组转换为基于列的数组,如下所示:
/** [column][row]. */
public int[][] tiles;
……但我真的不知道从哪里开始
原文由 Antti Kolehmainen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我看到所有的答案都创建了一个新的结果矩阵。这很简单:
matrix[i][j] = matrix[j][i];
但是,如果是方矩阵,您也可以就地执行此操作。
// Transpose, where m == n
for (int i = 0; i < m; i++) {
for (int j = i + 1; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
这对于较大的矩阵更好,因为创建新的结果矩阵会浪费内存。如果它不是正方形,您可以创建一个尺寸为 NxM
的新尺寸,然后执行错位方法。注意:对于就地,请注意 j = i + 1
。它不是 0
。
原文由 Jash Sayani 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
尝试这个:
输出: