前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >旋转正方形矩阵

旋转正方形矩阵

作者头像
名字是乱打的
发布2022-05-13 10:01:03
5470
发布2022-05-13 10:01:03
举报
文章被收录于专栏:软件工程

【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。

【要求】 额外空间复杂度为O(1)。

思想和转圈打印矩阵,差不多,从外圈到内圈逐层的转换,对于一个正方形边框我们只需要移动最上面那个框上的点,带动整个框上的点移动即可.

代码

扣边界还是非常烦人的,晕乎乎

代码语言:javascript
复制
package com.day1.practice;

import java.time.temporal.Temporal;

public class RotatingSquareMatrix {

    public static void Rotate(int[][] SquareMatrix){
        int tR=0;//矩阵左上角的行坐标
        int tC=0;//矩阵左上角的列左边
        int dR=SquareMatrix.length-1;   //矩阵右下角的行坐标
        int dC=SquareMatrix[0].length-1;//矩阵右下角的列左边
        while (tR<=dR&&tC<=dC){
            RotateEdge(SquareMatrix,tR,tC,dR,dC);
            tR++;tC++;
            dR--;dC--;
        }
    }
    //         {   1, 2,  3,  4   },
    //         {   5, 6,  7,  8   },
    //         {   9, 10, 11, 12  },
    //         {   13,14, 15, 16  }
    //          (tR,tC)
    //
    //
    //
    //                      (dR,dC)
    public static void RotateEdge(int[][] sm,int tR,int tC,int dR,int dC){
        for(int i=0;i<dC-tC;i++){
            int temp=sm[tR][tC+i];//temp存上面点的值
            sm[tR][tC+i]= sm[dR-i][tC];//用左边点的值覆盖上面点√
            sm[dR-i][tC]=sm[dR][dC-i];//用下边点的值覆盖左面点√
            sm[dR][dC-i]=sm[tR+i][dC];//用右边点的值覆盖下面点√
            sm[tR+i][dC]=temp;//用临时存储的上边点的值覆盖右面点√
        }
    }
//test
    public static void main(String[] args){
        int [][] matrix = {
                {   1, 2,  3,  4   },
                {   5, 6,  7,  8   },
                {   9, 10, 11, 12  },
                {   13,14, 15, 16  }
        };
        Rotate(matrix);
        for(int i=0;i<matrix.length;i++){
          for(int j=0;j<matrix.length;j++){
              System.out.print(matrix[i][j]+" ");
          }
              System.out.println();
        }
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档