解题方法
这个问题是关于如何将一个矩阵顺时针旋转90度。为了解决这个问题,我们可以采用以下步骤:
转置矩阵:首先,我们需要对矩阵进行转置。转置意味着将矩阵的行变成列,列变成行。对于矩阵中的每个元素matrix[i][j],在转置后它会移动到位置matrix[j][i]。
翻转每一行:转置矩阵后,我们需要将每一行的元素翻转,即第一个元素和最后一个元素交换位置,这样对于每一行都进行操作,直至中间的元素。
以题目中的例子来说:
原始矩阵:
1 2 3
4 5 6
7 8 9
转置后的矩阵:
1 4 7
2 5 8
3 6 9
每行翻转后的矩阵:
7 4 1
8 5 2
9 6 3
这就是顺时针旋转90度后的矩阵。文章来源:https://www.toymoban.com/news/detail-848814.html
代码如下:文章来源地址https://www.toymoban.com/news/detail-848814.html
class Solution {
public static void rotate(int[][] matrix) {
// 矩阵转置
transpose(matrix);
// 翻转每一行
reverseRows(matrix);
}
private static void transpose(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
// 交换元素 matrix[i][j] 和 matrix[j][i]
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
private static void reverseRows(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n; i++) {
int start = 0;
int end = n - 1;
while (start < end) {
// 交换行的首尾元素
int temp = matrix[i][start];
matrix[i][start] = matrix[i][end];
matrix[i][end] = temp;
start++;
end--;
}
}
}
}
到了这里,关于20、矩阵-旋转图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!