如何旋转二维数组?
受雷蒙德·陈(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