-
Notifications
You must be signed in to change notification settings - Fork 0
/
48.旋转图像.cpp
45 lines (39 loc) · 1.13 KB
/
48.旋转图像.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
* @lc app=leetcode.cn id=48 lang=cpp
*
* [48] 旋转图像
*/
// @lc code=start
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
// 利用一个巧妙的思维,先将二维矩阵沿对角线反转
// 然后再对每一列进行反转
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
// 然后再对列进行一个反转
// 注意这样的一个遍历方式的不同
// 这里如果需要修改到 matrix 函数的话,需要的话要用的是引用的方式
// 可能需要补充下 C++ 的指针和引用的知识点
for (auto &row: matrix) {
reverse(row);
}
}
void reverse(vector<int>& arr) {
int i = 0;
int j = arr.size() - 1;
while (j > i) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++; j--;
}
}
};
// @lc code=end