如何旋转二维数组?


狗头军师
2025-03-12 06:39:01 (5小时前)

受雷蒙德·陈(Raymond Chen)的启发,假设您有一个4x4二维数组,请编写一个将其旋转90度的函数。雷蒙德(Raymond)链接到伪代码的解决方案,但我希望看到一些真实世界的东西。


  1. [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,该怎么办?

2 条回复
  1. 1# v-star*위위 | 2020-08-14 14-30

    在C#中

    1. int[,] array = new int[4,4] {
    2. { 1,2,3,4 },
    3. { 5,6,7,8 },
    4. { 9,0,1,2 },
    5. { 3,4,5,6 }
    6. };
    7. int[,] rotated = RotateMatrix(array, 4);
    8. static int[,] RotateMatrix(int[,] matrix, int n) {
    9. int[,] ret = new int[n, n];
    10. for (int i = 0; i < n; ++i) {
    11. for (int j = 0; j < n; ++j) {
    12. ret[i, j] = matrix[n - j - 1, i];
    13. }
    14. }
    15. return ret;
    16. }
登录 后才能参与评论