Leetcode 48. 旋转图像

99 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

一、题目描述

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

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

二、思路分析

  • 这是一道蛮有意思的题

  • 还是找规律,找几个数,看他旋转之后变成的位置

  • 这道题有两种思路,第一种时顺时针旋转,另一种是对角线翻转左右翻转

  • 我这里是用第二种方法

三、AC 代码:

class Solution {
    public void rotate(int[][] matrix) {
        //获取矩阵的长度
        int n = matrix.length;
        //先沿斜对角线翻转
        for(int i = 0; i < n; i++){
            for(int j = i; j < n; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //再沿垂直竖线翻转
        for(int j = 0; j < n/2; j++){
            for(int i = 0; i < n; i++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][n - j - 1];
                matrix[i][n - j - 1] = temp;
            }
        }
    }
}

四、总结:

  • 好了,代码撸完,我们总结一下
    • 找规律还是蛮难的(这道题可以记一下)

    • 翻转要定义个变量进行做交换用

    • 对角线翻转是n

    • 左右翻转要记得n要除以2

最后这个算法是Leetcode的第48题,是热题100里的题,去年我刷了热题100用时一个月左右,接下来我会继续更新,小伙伴可以点赞关注,如果你也在刷热题100的话,希望可以对你有一些启发!