1. ホーム
  2. algorithm

[解決済み] 2次元の配列を回転させる方法は?

2022-03-17 09:23:37

質問

インスパイアード・バイ Raymond Chenさんの投稿 4x4 の 2 次元配列があるとすると、それを 90 度回転させる関数を書いてください。Raymondは疑似コードで解決策にリンクしていますが、私は実際のものを見てみたいです。

[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]

になる。

[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]

更新情報 : Nickの回答が一番わかりやすいのですが、n^2よりいい方法はないでしょうか?行列が10000x10000だったらどうでしょうか?

どのように解決するのですか?

以下はC#の場合です。

int[,] array = new int[4,4] {
    { 1,2,3,4 },
    { 5,6,7,8 },
    { 9,0,1,2 },
    { 3,4,5,6 }
};

int[,] rotated = RotateMatrix(array, 4);

static int[,] RotateMatrix(int[,] matrix, int n) {
    int[,] ret = new int[n, n];

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            ret[i, j] = matrix[n - j - 1, i];
        }
    }

    return ret;
}