给出一个用二维矩阵表示的图像返回该图像顺时针旋转90度的结果扩展:你能使用原地算法解决这个问题么?

给出一个用二维矩阵表示的图像

返回该图像顺时针旋转90度的结果

扩展:

你能使用原地算法解决这个问题么?

解析:

//做两次翻转,先沿右上-左下的对角线翻转,再沿水平中线上下翻转

class Solution {

public:

void rotate(vector > &matrix) {

//对角线翻转

const int n = matrix.size();

for (int i = 0; i < n; i++)

for (int j = 0; j < n - i; j++)

swap(matrix[i][j], matrix[n-1-j][n-1-i]);

for (int i = 0; i < n/2; i++)

for (int j = 0; j < n; j++)

swap(matrix[i][j],matrix[n-1-i][j]);

}

};

你可能感兴趣的:(算法,矩阵,线性代数)