# 旋转图像

<p>给定一个 <em>n </em>× <em>n</em> 的二维矩阵 <code>matrix</code> 表示一个图像。请你将图像顺时针旋转 90 度。</p><p>你必须在<strong><a href="https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95" target="_blank"> 原地</a></strong> 旋转图像，这意味着你需要直接修改输入的二维矩阵。<strong>请不要 </strong>使用另一个矩阵来旋转图像。</p><p> </p><p><strong>示例 1：</strong></p><img alt="" src="https://img-service.csdnimg.cn/img_convert/9a815a9eeb64d633de1bcd8d864f069d.jpeg" style="width: 642px; height: 242px;" /><pre><strong>输入：</strong>matrix = [[1,2,3],[4,5,6],[7,8,9]]<strong><br />输出：</strong>[[7,4,1],[8,5,2],[9,6,3]]</pre><p><strong>示例 2：</strong></p><img alt="" src="https://img-service.csdnimg.cn/img_convert/5f637f84287da51eb330d2128bfb306f.jpeg" style="width: 800px; height: 321px;" /><pre><strong>输入：</strong>matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]<strong><br />输出：</strong>[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]</pre><p><strong>示例 3：</strong></p><pre><strong>输入：</strong>matrix = [[1]]<strong><br />输出：</strong>[[1]]</pre><p><strong>示例 4：</strong></p><pre><strong>输入：</strong>matrix = [[1,2],[3,4]]<strong><br />输出：</strong>[[3,1],[4,2]]</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>matrix.length == n</code></li>	<li><code>matrix[i].length == n</code></li>	<li><code>1 <= n <= 20</code></li>	<li><code>-1000 <= matrix[i][j] <= 1000</code></li></ul>

以下程序实现了这一功能，请你填补空白处内容：

```cpp
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
	void rotate(vector<vector<int>> &matrix)
	{
		int size = matrix.size();
		for (int i = 0; i < size / 2; i++)
		{
			int low = i, high = size - i - 1;
			for (int j = low; j < high; j++)
			{
				int tmp = matrix[i][j];
				_________________________;
			}
		}
	}
};
```

## template

```cpp
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
	void rotate(vector<vector<int>> &matrix)
	{
		int size = matrix.size();
		for (int i = 0; i < size / 2; i++)
		{
			int low = i, high = size - i - 1;
			for (int j = low; j < high; j++)
			{
				int tmp = matrix[i][j];
				matrix[i][j] = matrix[size - 1 - j][i];
				matrix[size - 1 - j][i] = matrix[size - 1 - i][size - 1 - j];
				matrix[size - 1 - i][size - 1 - j] = matrix[j][size - 1 - i];
				matrix[j][size - 1 - i] = tmp;
			}
		}
	}
};
```

## 答案

```cpp
matrix[i][j] = matrix[size - 1 - j][i];
matrix[size - 1 - j][i] = matrix[size - 1 - i][size - 1 - j];
matrix[size - 1 - i][size - 1 - j] = matrix[j][size - 1 - i];
matrix[j][size - 1 - i] = tmp;
```

## 选项

### A

```cpp
matrix[i][j] = matrix[size - 1 - j][i];
matrix[size - 1 - j][i] = matrix[size - i][size - j];
matrix[size - 1 - i][size - j] = matrix[j][size - i];
matrix[j][size - 1 - i] = tmp;
```

### B

```cpp
matrix[i][j] = matrix[size - 1 - j][i];
matrix[size + 1 - j][i] = matrix[size + 1 - i][size + 1 - j];
matrix[size + 1 - i][size + 1 - j] = matrix[j][size + 1 - i];
matrix[j][size + 1 - i] = tmp;
```

### C

```cpp
matrix[i][j] = matrix[size - 1 - j][i];
matrix[size - 1 - j][i] = matrix[size - 1 - i][size + 1 - j];
matrix[size - 1 - i][size - 1 - j] = matrix[j][size + 1 - i];
matrix[j][size - 1 - i] = tmp;
```