Rotate ImageMar 18 '124182 / 9471
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?
这题我第一次做时候,实现的非常复杂。人肉实现rotate。code很麻烦。
后来偶然间看到同学的做法,很妙:
rotate(M) = traspose(M)后,swap列
例如:
123
456
789
先transpose:
147
258
369
然后对调第1,3列
741
852
963
OK!
class Solution { public: void rotate(vector<vector<int> > &matrix) { int len = matrix.size(); if (len == 0) return ; for (int i = 0; i < len; i++) { for (int j = i; j < len; j++) { swap(matrix[i][j], matrix[j][i]); } } int i = 0, j = len - 1; while (i < j) { for (int k = 0; k < len; k++) { swap(matrix[k][i], matrix[k][j]); } i++, j--; } } };