LeetCode48

力扣48题

题目描述:

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotate-image
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

image.png image.png

题解思路:矩阵的第i行变为第j列,其中i+j=n-1;

  1. 新建一个临时矩阵,将原来矩阵的第i行变为第j列
  2. 将临时矩阵赋给原来的矩阵
class Solution {
    public void rotate(int[][] matrix) {
        //将第i行-->第((n-1)-i)列即可
        int n = matrix[0].length;//获取矩阵的秩
        int[][] res = new int[n][n];//辅助矩阵
        for(int i=0, j=(n-1);i<n;i++,j--){//外层的行
            for(int k=0; k<n;k++){
                res[k][j] = matrix[i][k];
            }
        }

        //重新赋给原来的矩阵matrix
        for (int i=0;i<res[0].length;i++){
            for (int j=0;j<res.length;j++){
                matrix[i][j] = res[i][j];
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Miss_croal/article/details/130370985