如何旋转二维数组?

受雷蒙德·陈(Raymond Chen)的 帖子启发,假设您有一个4x4二维数组,请编写一个将其旋转90

度的函数。雷蒙德(Raymond)链接到伪代码的解决方案,但我希望看到一些实际的东西。

[1][2][3][4]

[5][6][7][8]

[9][0][1][2]

[3][4][5][6]

Becomes:

[3][9][5][1]

[4][0][6][2]

[5][1][7][3]

[6][2][8][4]

更新:尼克的答案是最直接的,但是有没有办法比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;

}

以上是 如何旋转二维数组? 的全部内容, 来源链接: utcz.com/qa/399769.html

回到顶部