本文主要是介绍Leetcode: 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?
思路分析:
最笨的方法,重新开辟一个矩阵空间,做旋转。(题目要求最好能就地旋转)
更好的方法:先将矩阵上下对折,然后再沿对角线对折。
例如:
1 2 3 7 8 9 7 4 1 4 5 6 -> 4 5 6 -> 8 5 2 7 8 9 1 2 3 9 6 3
OK,开始写代码!
C++参考代码:
class Solution
{
public:void rotate(vector<vector<int> > &matrix){if (matrix.empty()) return;int rows = int(matrix.size());int cell = 0;//上下对折for (int i = 0; i < rows / 2; ++i){for (int j = 0; j < rows; ++j){cell = matrix[i][j];matrix[i][j] = matrix[rows - i - 1][j];matrix[rows - i - 1][j] = cell;}}//对角线对折for (int i = 0; i < rows; ++i){for (int j = 0; j < i; ++j){cell = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = cell;}}}
};
这篇关于Leetcode: Rotate Image的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!