solution.md 3.8 KB
Newer Older
1
# 旋转图像
F
fix bug  
feilong 已提交
2

3
<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://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0000-0099/0048.Rotate%20Image/images/mat1.jpg" 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://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0000-0099/0048.Rotate%20Image/images/mat2.jpg" 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>
每日一练社区's avatar
每日一练社区 已提交
4
<p>以下<span style="color:red">错误</span>的选项是?</p>
F
fix bug  
feilong 已提交
5

6
## aop
F
fix bug  
feilong 已提交
7

8
### before
F
fix bug  
feilong 已提交
9

每日一练社区's avatar
每日一练社区 已提交
10
```c
11 12

```
每日一练社区's avatar
每日一练社区 已提交
13

14
### after
F
fix bug  
feilong 已提交
15

每日一练社区's avatar
每日一练社区 已提交
16
```c
17 18 19 20

```

## 答案
F
fix bug  
feilong 已提交
21

每日一练社区's avatar
每日一练社区 已提交
22
```c
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
class Solution
{
public:
    void rotate(vector<vector<int>> &matrix)
    {
        int n = matrix.size();
        int temp = 0;
        for (int i = 0; i < n; ++i)
        {
            for (int j = i; j < n; ++j)
            {
                temp = matrix[i][j];
                matrix[i][j] = matrix[n - j - 1][i];
                matrix[j][i] = temp;
            }
        }
        for (int i = 0; i < n; ++i)
        {
            reverse(matrix[i].begin(), matrix[i].end());
        }
    }
};
```
## 选项

F
fix bug  
feilong 已提交
48

49
### A
F
fix bug  
feilong 已提交
50

每日一练社区's avatar
每日一练社区 已提交
51
```c
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
class Solution
{
public:
    void rotate(vector<vector<int>> &matrix)
    {
        int temp = 0;
        int n = matrix.size();
        for (int i = 0; i < n / 2; i++)
        {
            for (int j = i; j < n - i - 1; j++)
            {
                temp = matrix[i][j];
                matrix[i][j] = matrix[n - j - 1][i];
                matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
                matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
                matrix[j][n - i - 1] = temp;
            }
        }
    }
};
```

### B
F
fix bug  
feilong 已提交
75

每日一练社区's avatar
每日一练社区 已提交
76
```c
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
class Solution
{
public:
    void rotate(vector<vector<int>> &matrix)
    {
        int n = matrix.size();
        int tmp = 0;
        for (int i = 0; i < n; i++)
            for (int j = i; j < n; j++)
            {
                tmp = matrix[j][i];
                matrix[j][i] = matrix[i][j];
                matrix[i][j] = tmp;
            }
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n / 2; j++)
            {
                tmp = matrix[i][j];
                matrix[i][j] = matrix[i][n - j - 1];
                matrix[i][n - j - 1] = tmp;
            }
    }
};
```

### C
F
fix bug  
feilong 已提交
103

每日一练社区's avatar
每日一练社区 已提交
104
```c
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
class Solution
{
public:
    void rotate(vector<vector<int>> &matrix)
    {

        int n = matrix.size();
        vector<vector<int>> matrix_temp = matrix;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                matrix_temp[j][n - i - 1] = matrix[i][j];
            }
        }
        matrix = matrix_temp;
    }
};

```