48. 旋转图像(中等题)

时光总嘲笑我的痴心妄想 提交于 2020-01-14 01:54:18

题目描述:
给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

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

示例 1:

给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],

原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]

示例 2:

给定 matrix =
[
[ 5, 1, 9,11],
[ 2, 4, 8,10],
[13, 3, 6, 7],
[15,14,12,16]
],

原地旋转输入矩阵,使其变为:
[
[15,13, 2, 5],
[14, 3, 4, 1],
[12, 6, 8, 9],
[16, 7,10,11]
]

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

class Solution {
    public void rotate(int[][] matrix) {
        if(matrix == null || matrix.length == 0||matrix[0].length == 0){
            return;
        }
        int tR = 0;
        int tC = 0;
        int dR = matrix.length - 1;
        int dC = matrix[0].length - 1;
        while (tR < dR){
            rotateEdge(matrix,tR++,tC++,dR--,dC--);
        }
    }

    private void rotateEdge(int[][] arr,int tR,int tC,int dR,int dC) {
        int times = dC - tC;
        for (int i = 0; i < times; i++) {
            int temp = arr[tR][tC + i];
            arr[tR][tC+i] = arr[dR-i][tC];
            arr[dR-i][tC] = arr[dR][dC-i];
            arr[dR][dC-i] = arr[tR+i][dC];
            arr[tR+i][dC] = temp;
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!