您的位置:首页 > 其它

Leetcode题解-48. Rotate Image

2017-11-19 23:06 459 查看

Leetcode题解-48. Rotate Image

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

Rotate the image by 90 degrees (clockwise).

Note:

You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

Example 1:

Given input matrix =

[

[1,2,3],

[4,5,6],

[7,8,9]

],

rotate the input matrix in-place such that it becomes:

[

[7,4,1],

[8,5,2],

[9,6,3]

]

Example 2:

Given input matrix =

[

[ 5, 1, 9,11],

[ 2, 4, 8,10],

[13, 3, 6, 7],

[15,14,12,16]

],

rotate the input matrix in-place such that it becomes:

[

[15,13, 2, 5],

[14, 3, 4, 1],

[12, 6, 8, 9],

[16, 7,10,11]

]

思路

题目的意思是将第k(k>=0)行的元素置换到第n-k列。

可以发现,先将行做一个反转,即将第k(k>=0)和第n-k行交换,再以主对角线(左上到右下的对角线)为对称轴,将matrix[i][j]和matrix[j][i]交换。

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

代码

class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
reverse(matrix.begin(), matrix.end());
for(int i = 0; i < matrix.size(); i++){
for(int j = i+1; j < matrix[0].size(); j++){
swap(matrix[i][j], matrix[j][i]);
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode