本题特点
- 二维数组
- 90度旋转,1、将二维矩阵按照对角线反转2、按照行反转
本题思路
- left、right分别在数组两侧
- 交换两侧的值、然后left right 向中间移动
def rotate(matrix):
for i in range(0, len(matrix)):
for j in range(0, i): # 反转二维数组
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
for i in range(0, len(matrix)): # 按照行反转
matrix[i].reverse()
return matrix
由于使用Python的List.reverse() 方法 这是改方法的扩展写法
# 二维数组 按照行反转 方法一
def reverse90(matrix):
i = 0
while i < len(matrix):
t = 0
j = len(matrix[0]) - 1
while t <= j:
matrix[i][t], matrix[i][j] = matrix[i][j], matrix[i][t]
t += 1
j -= 1
i += 1
return matrix
print(reverse90([[1,4,7],[2,5,8],[3,6,9]]))
Java写法
class Solution {
public void rotate(int[][] matrix){
for(int i = 0; i < matrix[0].length; i++){
for(int j = 0; j < i; j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
for(int i = 0; i < matrix[0].length; i++){
int temp = 0, left = 0, right = matrix.length -1;
while (left <= right){
temp = matrix[i][left];
matrix[i][left] = matrix[i][right];
matrix[i][right] = temp;
left ++;
right --;
}
}
}
}

744

被折叠的 条评论
为什么被折叠?



