LeetCode - 48. Rotate Image 将正方形矩阵旋转 90 度

发布于 2024-11-03 10:29:24 字数 1320 浏览 9 评论 0

题意

解析

  • 这个也是一个宏观的调度问题,还是使用分圈的处理方式,每次对一个矩阵的外围进行处理(边界) 跑;
  • 我们发现只要替换四个数,替换 n-1 次,就把外面的边界替换好了,然后我们缩小范围(左上角的 (ar,ac) 和右下角的 (br,bc) 分别减一),就可以完成操作,如下图;

代码如下:

class Solution {

  public void rotate(int[][] matrix) {
    int ar = 0;
    int ac = 0;
    int br = matrix.length - 1;
    int bc = matrix[0].length - 1;
    while (ar <= br && ac <= bc) {
      rotateEdge(matrix, ar++, ac++, br--, bc--);
    }
  }

  //具体的分圈的交换旋转
  private void rotateEdge(int[][] matrix, int ar, int ac, int br, int bc) {
    int times = bc - ac;
    int tmp = 0;

    for (int i = 0; i < times; i++) {// times - 1 次  每次交换四个点的值
      tmp = matrix[ar][ac + i];
      matrix[ar][ac + i] = matrix[br - i][ac];
      matrix[br - i][ac] = matrix[br][bc - i];
      matrix[br][bc - i] = matrix[ar + i][bc];
      matrix[ar + i][bc] = tmp;
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

伴随着你

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文