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?

C++实现代码:

#include<iostream>

#include<vector>

using namespace std;



class Solution

{

public:

    void rotate(vector<vector<int> > &matrix)

    {

        if(matrix.empty())

            return;

        vector<vector<int> > temp=matrix;

        int i,j;

        int n=matrix.size();

        for(i=0;i<n;i++)

        {

            for(j=0;j<n;j++)

            {

                matrix[j][n-i-1]=temp[i][j];

            }

        }

    }

};



int main()

{

    Solution s;

    vector<vector<int> > vec={{1,2,3},{4,5,6},{7,8,9}};

    s.rotate(vec);

    for(auto a:vec)

    {

        for(auto v:a)

            cout<<v<<" ";

        cout<<endl;

    }

}

 第二遍刷题,就地的方法。

例如,顺时针旋转,可以先将矩阵的上下分别交换,然后沿主对角线进行交换。

class Solution {

public:

    void rotate(vector<vector<int> > &matrix) {

        if(matrix.empty()||matrix[0].empty())

            return;

        int n=matrix.size();

        for(int i=0;i<n/2;++i)

            for(int j=0;j<n;++j)

                swap(&matrix[i][j],&matrix[n-1-i][j]);

        for(int i=0;i<n;++i)

            for(int j=0;j<i;++j)

            swap(&matrix[i][j],&matrix[j][i]);

    }

    void swap(int *a,int *b)

    {

        int tmp=*a;

        *a=*b;

        *b=tmp;

    }

};

 

你可能感兴趣的:(image)