Skip to content

矩阵旋转 标准笔记

一、前置概念

1. 矩阵转置

沿主对角线交换元素,行与列互换。 规则:matrix[i][j]matrix[j][i] 互换。

示例

原矩阵
1 2 3
4 5 6
7 8 9

转置后
1 4 7
2 5 8
3 6 9

2. 行翻转

对单行元素进行左右逆序。 示例

单行
1 4 7

行翻转后
7 4 1

3. 列翻转

对单列元素进行上下逆序。 示例

单列
1
4
7

列翻转后
7
4
1

二、方阵旋转规则

下文规则适用于 n 阶方阵。

1. 顺时针旋转 90 度

操作步骤

  1. 矩阵转置
  2. 逐行执行行翻转

完整演示

原矩阵
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

2. 逆时针旋转 90 度

操作步骤

  1. 逐列执行列翻转
  2. 矩阵转置

完整演示

原矩阵
1 2 3
4 5 6
7 8 9

第一步 逐列翻转
7 2 3
8 5 6
1 4 9

第二步 转置
7 8 1
2 5 4
3 6 9

3. 旋转 180 度

操作步骤

  1. 逐行执行行翻转
  2. 整体上下颠倒,等价逐列翻转

完整演示

原矩阵
1 2 3
4 5 6
7 8 9

第一步 逐行翻转
3 2 1
6 5 4
9 8 7

第二步 整体上下颠倒
9 8 7
6 5 4
3 2 1

4. 顺时针旋转 270 度

等价于逆时针旋转 90 度,规则同逆时针旋转 90 度。

三、通用代码模板 Java

1. 矩阵转置

java
int n = matrix.length;
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;
    }
}

2. 逐行翻转

java
int n = matrix.length;
for (int i = 0; i < n; i++) {
    int l = 0;
    int r = n - 1;
    while (l < r) {
        int temp = matrix[i][l];
        matrix[i][l] = matrix[i][r];
        matrix[i][r] = temp;
        l++;
        r--;
    }
}

3. 逐列翻转

java
int n = matrix.length;
for (int j = 0; j < n; j++) {
    int t = 0;
    int b = n - 1;
    while (t < b) {
        int temp = matrix[t][j];
        matrix[t][j] = matrix[b][j];
        matrix[b][j] = temp;
        t++;
        b--;
    }
}

四、规则汇总表

旋转角度执行顺序
顺时针 90 度转置 、逐行翻转
逆时针 90 度逐列翻转 、转置
180 度逐行翻转 、逐列翻转
顺时针 270 度逐列翻转 、转置

Powered by VitePress 1.6.4 | 持续更新中