python
将原矩阵先水平翻转,再沿主对角线(左上到右下)翻转,就是顺时针翻转90度的效果了。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n = len(matrix)
# 水平线翻转
for i in range(n//2):
for j in range(n):
matrix[i][j], matrix[n-i-1][j] = matrix[n-i-1][j], matrix[i][j]
# 对角线翻转
for i in range(n):
for j in range(i):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
c++
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
// 只需要原地两步翻转,即可得到结果
// 1. 左上-右下 对角线翻转
// 2. 每行内翻转
int n = matrix.size();
// 左上-右下 对角线翻转
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
swap(matrix[i][j], matrix[j][i]);
}
}
// 每行内翻转
for (int i = 0; i < n; i++) {
int left = 0, right = n - 1;
while (left < right) {
swap(matrix[i][left], matrix[i][right]);
left++; right--;
}
}
}
};