每日一题-数组 *leetcode48

241 阅读1分钟

一、题目描述

二、题目思路

考虑和 旋转数组 题目有同样的数学问题

三、提交代码

class Solution {
    public void rotate(int[][] matrix) {
        for(int i =0;i<matrix.length;i++){
            for(int j =i;j<matrix[0].length;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        for(int l =0;l<matrix.length;l++){
            int left =0;
            int right = matrix[0].length-1;
            while(left<right){
                int temp = matrix[l][left];
                matrix[l][left] = matrix[l][right];
                matrix[l][right] = temp;
                left++;
                right--;
            }
        }
    }
}

四、代码思路

将矩阵顺时针旋转90度,即首先将矩阵转置,然后对每一行元素进行反转

五、存在问题

由于需要原地操作,因此只能对方阵进行操作,如对3*4矩阵操作,转置后矩阵尺寸为4*3,会出现索引越界报错。