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?题目要就地算法,那么可以通过折叠矩阵上下以及斜对角线折叠来实现,代码如下:1 class Solution { 2 public: 3 void rotate(vector>& matrix) { 4 int sz = matrix.size(); 5 if(!sz) return; 6 for(int i = 0; i < sz; ++i){ 7 for(int begin = 0, end = sz - 1; begin < end; ++begin, --end){ 8 swap(matrix[begin][i], matrix[end][i]); 9 }10 }11 for(int i = 0; i < sz; ++i){12 for(int j = i; j < sz; ++j){13 swap(matrix[i][j], matrix[j][i]);14 }15 }16 }17 };
同样的通过乘以一个矩阵的方法当然也可以实现,不过那不是in-place算法。