美文网首页
48. 旋转图像

48. 旋转图像

作者: justonemoretry | 来源:发表于2020-08-28 23:44 被阅读0次

自己解法

这种矩阵题关键还是得记住规律,这个题就是先对称反转,再前后反转,不然在不利用额外空间的情况下确实不好解。

class Solution {

    public void rotate(int[][] matrix) {

        int n = matrix.length;

        // 先对称反转

        for (int i = 0; i < n; i++) {

            for (int j = i; j < n; j++) {

                int temp = matrix[i][j];

                matrix[i][j] = matrix[j][i];

                matrix[j][i] = temp;

            }

        }

        // 再顺序反转

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < n / 2; j++) {

                int temp = matrix[i][j];

                matrix[i][j] = matrix[i][n - j - 1];

                matrix[i][n - j - 1] = temp;

            }

        }

    }

}

官方解法

将要旋转的部分分成4个矩形,分别旋转90度,前一个的列当行,列为n - 1 - 前一个的行,

确定要交换的4个点,然后用(k + 3) % 4进行4个点的交换。

class Solution {

  public void rotate(int[][] matrix) {

    int n = matrix.length;

    for (int i = 0; i < n / 2 + n % 2; i++) {

      for (int j = 0; j < n / 2; j++) {

        int[] tmp = new int[4];

        int row = i;

        int col = j;

        for (int k = 0; k < 4; k++) {

          tmp[k] = matrix[row][col];

          int x = row;

          row = col;

          col = n - 1 - x;

        }

        for (int k = 0; k < 4; k++) {

          matrix[row][col] = tmp[(k + 3) % 4];

          int x = row;

          row = col;

          col = n - 1 - x;

        }

      }

    }

  }

}

相关文章

  • leetcode 48.图像旋转 及LCP 2. 黑白方格画

    48.图像旋转给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像...

  • LeetCode:48. 旋转图像简单思路求解

    题目:48. 旋转图像[https://leetcode-cn.com/problems/rotate-image...

  • LeetCodeDay06

    48. 旋转图像 描述 给定一个 n × n 的二维矩阵表示一个图像。 将图像旋转 90 度(顺时针)。 注意 你...

  • 48.旋转图像

  • 48. 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地 旋转图像,这意味着你...

  • 48. 旋转图像

    一、题目原型: 给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。 说明:你必须在原地旋转...

  • 48.旋转图像

    思路旋转分为两步:1、将矩阵转置,2、翻转当前行

  • 48. 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需...

  • 48. 旋转图像

    【Description】 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: ...

  • 48. 旋转图像

    【Description】给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你...

网友评论

      本文标题:48. 旋转图像

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