题解 | 顺时针旋转矩阵

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param mat int整型二维数组 
     * @param n int整型 
     * @return int整型二维数组
     */
    public int[][] rotateMatrix (int[][] mat, int n) {
        // write code here
        int up = 0;
        int down = n - 1;
        reverseRow(mat, up, down); // 整体行反转
        reverseDiagnoal(mat, n); // 沿对角线反转
        return mat;
    }

    private void reverseDiagnoal(int[][] mat, int n) {
         int i=0;
        int j=0;
        while (i < n) {
            j=0;
            while (i >= j) {
                int temp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = temp;
                j++;
            }
            i++;
        }

        i=1;
        while (i < n) {
            j = n-1;
            while (j > 0) {
                int temp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = temp;
                j--;
            }
            i++;
        }
        
    }


    private void reverseRow(int[][] mat, int i, int j) {
        while (i < j) {
            int[] row = mat[i];
            mat[i] = mat[j];
            mat[j] = row;
            i++;
            j--;
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务