You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
解題思路
這道題是將一個n*n的二維矩陣順時針旋轉(zhuǎn)90度萧锉,最重要的是得到變換相對應的點之間的坐標關系
我們知道每個點經(jīng)過變換以后相對于頂點的位置保持不變竟终。由此娄涩,我們可以推出坐標(i,j)在變換后相對應的點绩卤。
Rotate
再找到對應關系之后吝秕,我們只需要簡單地減緩他們的值就可以啦~
PS: n為奇數(shù)時要做特殊處理
代碼
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n / 2; i++)
for (int j = 0; j < n / 2; j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1] = tmp;
}
if (n % 2 == 1) {
int i = n / 2;
for (int j = 0; j < n / 2; j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1] = tmp;
}
}
}
};