leetcode : Rotate Image
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)的空间复杂度完成,所以一次转四个元素,从外到里一圈一圈的旋转,每一圈都把该行除最后一个元素进行旋转。。
AC代码:
class Solution { public: void rotate(vector<vector<int> > &matrix) { doRotate(matrix, 0, matrix.size() - 1); } void doRotate(vector<vector<int>> &matrix, int start, int end){ if(start >= end) return; else{ for(int i = 0; i < end - start; ++i){ int t1 = matrix[start][start + i],t2 = matrix[start + i][end]; int t3 = matrix[end][end - i], t4 = matrix[end - i][start]; matrix[start][start + i] = t4; matrix[start + i][end] = t1; matrix[end][end - i] = t2; matrix[end - i][start] = t3; } doRotate(matrix, ++start, --end); } } };
浙公网安备 33010602011771号