Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode

Leetcode algorithms 第 48 题: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?

解答

就地旋转矩阵90度,把矩阵分解成一个一个的环,逐个环进行。对每个环进行旋转时,先保存第一个位置的元素,填入新的元素,然后再新元素本来的位置再填入新元素,依次类推。注意坐标的对应关系。

具体代码如下:

class Solution {
public:
    void rotate(vector<vector<int> > &matrix) {
        int n = matrix.size();
        for (int i = 0, len = n; i < (n + 1) / 2; i++, len -= 2) //逐环进行
        {
            int x = i, y = i;
            for (int j = 0; j < len - 1; j++)
            {
                int tem = matrix[x][y+j];
                matrix[x][y+j] = matrix[x+len-1-j][y];
                matrix[x+len-1-j][y] = matrix[x+len-1][y+len-1-j];
                matrix[x+len-1][y+len-1-j] = matrix[x+j][y+len-1];
                matrix[x+j][y+len-1] = tem;
            }
        }
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论