2次元配列を回転させるにはどうすればいいですか? 質問する

2次元配列を回転させるにはどうすればいいですか? 質問する

に触発されたレイモンド・チェンの投稿たとえば、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 の場合はどうなりますか?

ベストアンサー1

O(n^2) 時間と O(1) 空間のアルゴリズム(回避策や不正行為は一切なし!)

+90 回転:

  1. 転置
  2. 各行を反転する

-90 回転:

方法1:

  1. 転置
  2. 各列を反転する

方法2:

  1. 各行を反転する
  2. 転置

+180 回転:

方法1 : +90度回転を2回行う

方法2 : 各行を反転し、次に各列を反転する

-180 回転:

方法1:-90度回転を2回行う

方法2 : 各列を反転し、次に各行を反転する

方法3 : 同じなので+180度回転する

おすすめ記事