Rotate Image
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
思路:
其实题目更好理解为旋转一个矩阵的下标90°。实际问题实际分析,这里不用图形学的选择矩阵的计算方法了。
关键是要把下标计算好,原矩阵的数值应该对应到新的旋转矩阵的那个位置,设计好公式就很容易计算了。
有图好理解,矩阵如下图:
示意图:
void rotate(vector<vector<int> > &matrix)
{
int n = matrix.size();
for (int i = 0; i < n / 2; ++i)
{
for (int j = i; j < n - 1 - i; ++j)
{
int t = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][i];
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
matrix[j][n - 1 - i] = t;
}
}
}

本文深入探讨如何通过原地操作实现二维矩阵旋转90度的问题,重点介绍了旋转算法的核心思想和具体实现步骤,包括下标计算规则及优化细节。
2178

被折叠的 条评论
为什么被折叠?



