先上下翻转,再按主对角线对称。
执行用时: c++ 16ms; java 1ms; python 44ms
c++
class Solution {
public:
void rotate(vector<vector<int>>& matrix)
{
reverse(matrix.begin(), matrix.end());
for (int i = 0; i < matrix.size(); ++i)
{
for (int j = i + 1; j < matrix[i].size(); ++j)
swap(matrix[i][j], matrix[j][i]);
}
}
};
java
class Solution {
public void rotate(int[][] matrix) {
int len = matrix.length;
for(int i = 0; i < len / 2; i++)
{
int[] tmp = matrix[i];
matrix[i] = matrix[len - 1 - i];
matrix[len - 1 - i] = tmp;
}
for(int i = 0; i < len; i++)
{
for(int j = 0; j < i; j++)
{
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
}
}
python
class Solution:
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
matrix.reverse()
for i in range(len(matrix)):
for j in range(i):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]