[LeetCode]Rotate Image

来源:互联网 发布:java测试工程师面试题 编辑:程序博客网 时间:2024/04/19 07:56

题目

Number: 48
Difficulty: Medium
Tags: Array

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

题解

顺时针旋转矩阵90度。

首先按行反转,然后对角线交换。

 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

如果要逆时针旋转90度。

首先按列反转,然后对角线交换。

 1 2 3     3 2 1     3 6 9 4 5 6  => 6 5 4  => 2 5 8 7 8 9     9 8 7     1 4 7

代码

顺时针90度:

void rotate(vector<vector<int>>& matrix) {    reverse(matrix.begin(), matrix.end());    for(int i = 0; i < matrix.size(); ++i)        for(int j = 0; j < i; ++ j)            swap(matrix[i][j], matrix[j][i]);}

逆时针90度:

void anti_rotate(vector<vector<int>> &matrix) {    for (auto vi : matrix)         reverse(vi.begin(), vi.end());    for (int i = 0; i < matrix.size(); ++i)        for (int j = 0; j < i; ++j)            swap(matrix[i][j], matrix[j][i]);}
0 0