LintCode-旋转图像

给定一个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]);
            }
        }
    }
};


你可能感兴趣的:(面试,lintcode)