当前位置: 首页 > news >正文

书籍将正方形矩阵顺时针转动90°(8)0605

题目
给定一个N x N的矩阵matrix,把这个矩阵调整成顺时针转动90°后的形式。

1        2        3        4

5        6        7        8

9       10      11      12

13      14      15      16

顺时针转动90°后为:

13        9        5        1

14        10      6        2

15        11      7        3

16        12       8        4

额外空间复杂度为O(1)。

解答

使用分圈处理的方式,在矩阵中用左上角的坐标(tR,tC)和右下角的坐标(dR,dC)就可以表示一个子矩阵。比如,题目中的矩阵,当(tR,tC)=(0,0)、(dR,dC)=(3,3)时,表示的子矩阵就是整个矩阵,那么这个子矩阵最外层的部分如下。

1        2        3        4        

5                             8

9                            12

13     14       15      16

在这个外围圈中,1,4,16,13为一组,然后让1占据4的位置,4占据16的位置,16占据13的位置,13占据1的位置,一组就调整完了。然后2,8,15,9一组,继续占据调整的过程,最后3,12,14,5为一组,继续占据调整的过程。然后(tR,tC)=(0,0)、(dR,dC)=(3,3)的子矩阵外层就调整完毕。接下来令tR和tC加1,即(tR,tC)=(1,1),令dR和dC减1,即(dR,dC)=(2,2),此时表示的子矩阵如下:

6        7        

10     11

这个外层只有一组,就是6,7,11,10,占据调整之后即可。所以,如果子矩阵的大小是M x M ,一共就有M-1组,分别进行占据调整即可。

public void totate(int[][] matrix){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--);}
}public void rotateEdge(int[][] m,int tR, int tC, int dR, int dC){int times = dC - tC; times 就是总的组数int tmp = 0;for(int i = 0; i!= times;i++){//一次循环就是一组占据调整tmp = m[tR][tC + i];m[tR][tC+i] = m[dR - i][tC];m[dR - i][tC] = m[dR][dC-i];m[dR][dC - i] = m[tR + i][dC];m[tR + i][dC] = tmp;}}

相关文章:

  • RADIUS-如何获取凭证
  • [蓝桥杯]植树
  • LLaMA.cpp 文本生成惩罚机制详解:从原理到实践的完整指南
  • Spring Bean生命周期全解析:从创建到销毁的底层细节
  • Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法
  • Flask+LayUI开发手记(八):通用封面缩略图上传实现
  • 复变函数中的对数函数及其MATLAB演示
  • 深入理解React Hooks的原理与实践
  • RDMA简介5之RoCE v2队列
  • 【高等数学】傅里叶级数逼近例子
  • 将 Jupyter Notebook 的默认存储路径从 C 盘迁移到 D 盘,可以通过以下步骤实现:
  • [密码学实战]彻底理解位(bit)与字节(byte)在十六进制处理中的区别
  • 【EN 18031】访问控制机制(ACM - 3):儿童玩具的防护盾
  • vue:当前对象添加对应值
  • Python cryptography【密码库】库功能与使用指南
  • 【Redis】类型补充
  • 墨者学院-密码学实训隐写术第二题
  • [闭源saas选项]Pinecone:为向量数据库而生的实时语义搜索引擎
  • 【网络安全】XSS攻击
  • Spring AI(10)——STUDIO传输的MCP服务端
  • 安徽网站建/泰州百度seo公司
  • 河北网站优化/搜外seo
  • 火影忍者网页制作网站/长沙网站关键词排名公司
  • 开个做网站公司/营销推广方案范文
  • 大良网站建设公司/专业拓客公司联系方式
  • 成都推广网站多少钱/seo工作内容和薪资