- 入力行列を2次元配列として表現します。
public static void transposeMatrix(int[][] matrix) {
int rows = matrix.length;
int columns = matrix[0].length;
for (int i = 0; i < rows; i++) {
for (int j = i + 1; j < columns; j++) {
// 要素の値を交換します
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
この方法では、入力行列自体を転置しています。行数と列数が異なる場合でも動作します。
- 入力行列を1次元配列として表現します。
public static void transposeMatrix(int[] matrix, int rows, int columns) {
for (int i = 0; i < rows; i++) {
for (int j = i + 1; j < columns; j++) {
// 要素のインデックスを計算します
int index1 = i * columns + j;
int index2 = j * columns + i;
// 要素の値を交換します
int temp = matrix[index1];
matrix[index1] = matrix[index2];
matrix[index2] = temp;
}
}
}
この方法では、1次元配列を使用して行列を表現し、転置を行います。行列の要素数が非常に大きい場合や、メモリ使用量を最小限に抑えたい場合に有用です。