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?

基本思想就是转圈一个个的替换,不过各个坐标转换的真是晕菜呀。。。

class Solution {
public:
    void rotate(vector<vector<int> > &matrix) {
        int size = matrix.size();
        int level = size / 2;
        for (int i = 0; i < level; ++i) {
            for (int j = i; j < size - i - 1; ++j) {
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[size-j-1][i];
                matrix[size-j-1][i] = matrix[size-i-1][size-j-1];
                matrix[size-i-1][size-j-1] = matrix[j][size-i-1];
                matrix[j][size-i-1] = tmp;
            }
        }
    }
};

=============第二次===============

class Solution {
public:
    void rotate(vector<vector<int> > &matrix) {
        int size = matrix.size() - 1;
        int start = 0;
        int end = matrix.size() - 1;
        for (int i = 0; i < matrix.size() / 2; ++i) {
            for (int j = start; j < end; ++j) {
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[size-j][i];
                matrix[size-j][i] = matrix[size-i][size-j];
                matrix[size-i][size-j] = matrix[j][size-i];
                matrix[j][size-i] = tmp;
            }
            ++start;
            --end;
        }
    }
};


你可能感兴趣的:(LeetCode)