Leetcode算法题目:Rotate Image

来源:互联网 发布:闪光灯软件哪个好 编辑:程序博客网 时间:2024/05/21 00:34

题目:

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;i<n;i++){//副对角线            for(int j = 0;j<n-i;j++)              swap(matrix[i][j],matrix[n-j-1][n-i-1]);        }        for (int i=0;i<n/2;++i){//水平线            for(int j=0;j<n;j++)              swap(matrix[i][j],matrix[n-i-1][j]);        }    }};
原创粉丝点击