七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

旋转图像:原地自转

写作时间:2026-07-13 20:38:33

给定一个 n× n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

是什么?

一个矩阵的原地自转,不要赋值给其他矩阵,原地自转

怎么做?

这里需要一个数学方法,顺时针九十度怎么转?先沿主对角线转再沿中轴线转,这样子就是九十度了,数学思维真的很重要

思考

七七一开始看到这种题目想到的其实是另立一个矩阵来存储,因为直接动原矩阵在工作中可能会涉及安全性问题,那么题目要求,就直接对原矩阵动手,数学思维想一下其实就出来了

代码

import java.util.ArrayList;
import java.util.List;

class Solution {
//    顺时针旋转九十度
    public void rotate(int[][] matrix) {
//        沿主对角线反转
        for (int i = 0;i < matrix.length;i++) {
            for (int j = i;j < matrix[i].length;j++) {
                int t = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = t;
            }
        }
//        沿中轴线反转
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length / 2; j++) {
                int t = matrix[i][j];
                matrix[i][j] = matrix[i][matrix[i].length - j - 1];
                matrix[i][matrix[i].length - j - 1] = t;
            }
        }
    }
}

这个代码比较简单,所以是边写边注释的,注释的比较简洁

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents