LintCode-旋转图像

来源:互联网 发布:数据质量控制系统 编辑:程序博客网 时间:2024/05/14 18:47

给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。


样例

给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]

挑战

能否在原地完成?

分析:一种解法是原地模拟,一个点存到下一个点,一圈一圈的模拟,另外还有种简单的实现方法是通过两次折叠,先上下对换,再根据对角线对换,即可得到目标图像。

代码:

class Solution {public:    /**     * @param matrix: A list of lists of integers     * @return: Void     */    void rotate(vector<vector<int> > &matrix) {        // write your code here        int n = matrix.size();        for(int i=0;i<n/2;i++)        {            int j = n-i-1;            for(int k=0;k<n;k++)                swap(matrix[i][k],matrix[j][k]);        }        for(int i=0;i<n;i++)        {            for(int j=0;j<i;j++)            {                swap(matrix[i][j],matrix[j][i]);            }        }    }};


0 0