题目
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
思路分析
- 首先先转置矩阵。
- 将转置后的矩阵的列发生交换。
注意点
如何不使用中间变量实现两个数的交换。使用异或运算。实现两个int的交换。
a=a^b, b=b^a, a = a^b;
例子,例如当a=4,b=7的时候。二进制a:0100,b:0111.
在这个过程中
a=(0100)^(0111)=(0011)
b=(0011)^(0111)=(0100)
a=(0011)^(0100)=(0111)
代码
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
// 首先就是将matrix变成其转置,然后将转置中的矩阵列发生变化。(i,j)-(j,i)-(j,n - 1 - i)
int n = matrix