题目描述
给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。
不占用额外内存空间能否做到?
我的解题
先沿着对角线变换
(i,j)->(n-i-1, n-j-1)
再上下变换
(i,j)->(n-i-1,j)
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
if(n==0) return;
for(int i=0; i<n; i++)
{
for(int j=0; j<n-i; j++)
{
int tmp = matrix[n-1-j][n-1-i];
matrix[n-1-j][n-1-i]=matrix[i][j];
matrix[i][j] = tmp;
}
}
for(int i=0; i<n/2; i++)
{
for(int j=0; j<n; j++)
{
int tmp = matrix[n-i-1][j];
matrix[n-i-1][j] = matrix[i][j];
matrix[i][j] = tmp;
}
}
return;
}
};
执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗 :8.4 MB, 在所有 C++ 提交中击败了100.00%的用户