您的位置:首页 > 其它

【题解】【矩阵】【回溯】【Leetcode】Rotate Image

2014-02-06 17:18 381 查看
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?

思路:

每次转着圈挪四个元素,这步只需要一个int的额外空间,想象一个方阵



哦不好意思,这个太不专业了,咱换个大一点6×6的



草图上比划比划第二层的元素怎么移动,一次Accept的感觉好爽

代码:

void rotate(vector<vector<int> > &matrix) {
int n = matrix.size();
if(n < 2) return;

for(int layer = 0; layer < n/2; layer++){
for(int i = layer; i < n-1-layer; i++){//避免重复处理n-1-layer
int leftTop = matrix[layer][i];//注意二维矩阵的(i,j)index与数学坐标(x,y)中是相反的
matrix[layer][i] = matrix[n-1-i][layer]; //先在纸上想清楚赋值的先后循序
matrix[n-1-i][layer] = matrix[n-1-layer][n-1-i];
matrix[n-1-layer][n-1-i] = matrix[i][n-1-layer];
matrix[i][n-1-layer] = leftTop;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: