如何旋转二维数组?受陈雷蒙德的职位,假设您有一个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
提交
取消