今天继续刷LeetCode,第48题,选择图片
分析:
方法一:可以借用矩阵转置,然后进行对调。
方法二:在不借用其他空间的情况下,就是找到规律,将对应位置进行替换,并进行交换。
附上C++代码:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n=matrix.size();
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
int temp=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=temp;
}
}
for(int i=0;i<n;i++)
{
int j=0;
int k=n-1;
while(j<k)
{
int tem=matrix[i][j];
matrix[i][j]=matrix[i][k];
matrix[i][k]=tem;
j++;
k--;
}
}
}
};
附上Python代码1:
matrix[:]=map(list,zip(*matrix[::-1]))
附上Python代码2:
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):
for j in range(i+1,n):
temp=matrix[i][j]
matrix[i][j]=matrix[j][i]
matrix[j][i]=temp
for i in range(n):
matrix[i]=matrix[i][::-1]