如何旋轉二維數組?受陳雷蒙德的職位,假設您有一個4x4二維數組,編寫一個將其旋轉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]更新尼克的回答是最直截了當的,但有沒有辦法比n^2做得更好呢?如果矩陣是10000x10000呢?
3 回答

慕沐林林
TA貢獻2016條經驗 獲得超9個贊
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;}

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
O(n^2)時間與O(1)空間算法
旋轉+90:
轉座子 反轉每一行
輪換-90:
方法1:
轉座子 反轉每一列
方法2:
反轉每一行 轉座子
旋轉+180:
方法1
方法2
旋轉180:
方法1
方法2
方法3
添加回答
舉報
0/150
提交
取消