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);
        }
    }
};

 

posted on 2014-12-06 17:37  远近闻名的学渣  阅读(124)  评论(0)    收藏  举报

导航