美文网首页
图像旋转

图像旋转

作者: Jimhou | 来源:发表于2019-04-21 19:47 被阅读0次
    题目需求

    给定一个 n × n 的二维矩阵表示一个图像。

    将图像顺时针旋转 90 度。

    说明:

    你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
    <p>
    示例 1:
    <p>
    给定 matrix =
    [
    [1,2,3],
    [4,5,6],
    [7,8,9]
    ],

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

    解题思路

    先将每一行逆序,再以i+j=length为轴做对称处理。

        public void rotate(int[][] matrix) {
            int n = matrix.length;
            for (int i = 0; i < matrix.length; i++) {
                reverse(matrix[i]);
            }
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix.length - i; j++) {
                    int t = matrix[i][j];
                    matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
                    matrix[n - 1 - j][n - 1 - i] = t;
                }
            }
        }
        public void reverse(int[] a) {
            for (int i = 0, j = a.length - 1; i < j; i++, j--) {
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    

    相关文章

      网友评论

          本文标题:图像旋转

          本文链接:https://www.haomeiwen.com/subject/shojgqtx.html