zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    Java中的并发库学习总结
    Android源码的git下载地址
    Android下载Android源码
    工具类 验证手机邮箱
    hibernate缓存说明
    Hibernate之N+1问题
    常用正则
    Java Base64加密、解密原理Java代码
    Base64加密解密原理以及代码实现(VC++)
    情书经典语录
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4112161.html
Copyright © 2011-2022 走看看