Leetcode 48. Rotate Image
题目描述:旋转90度顺时针矩阵,并且原地修改。
题目链接:Leetcode 48. Rotate Image
思路:找到矩阵坐标与左边之间的关系,并进行交换,如图。
一层一层这样的交换下去就可以了。如果n x n
则层数就是n//2
,列的j的选择就是j<n-i 看是在第几层。
当然这道题也可以有很多取巧的方式例如先reverse
然后再进一步处理。
class Solution:
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
for i in range(len(matrix)):
for j in range(i, len(matrix)):
temp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = temp
matrix[i].reverse()
代码如下
class Solution:
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
if not matrix:
return matrix
n = len(matrix) - 1
temp = 0
i = 0
while(i <= (n//2)): #层数
for j in range(i,n-i): #每层和j列的关系
temp = matrix[j][n-i]
matrix[j][n-i] = matrix[i][j]
matrix[i][j] = matrix[n-j][i]
matrix[n-j][i] = matrix[n-i][n-j]
matrix[n-i][n-j] = temp
i += 1
public class Solution {
public void rotate(int[][] matrix) {
for(int i=0, temp=0, n=matrix.length-1; i<=n/2; i++) {
for(int j=i; j<n-i; j++) {
temp = matrix[j][n-i];
matrix[j][n-i] = matrix[i][j];
matrix[i][j] = matrix[n-j][i];
matrix[n-j][i] = matrix[n-i][n-j];
matrix[n-i][n-j] = temp;
}
}
}
}