博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode#48 Rotate Image
阅读量:5263 次
发布时间:2019-06-14

本文共 1112 字,大约阅读时间需要 3 分钟。

Problem Definition:

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up:

Could you do this in-place?

Solution:

顺时针旋转90度,就是以表格(图片)中心为轴,所有坐标都做旋转。旋转中的坐标映射,用一个小例子来试试:

对一个3X3的表格,单元格的映射是这样的:

00-->02-->22-->20-->00

01-->12-->21-->10-->01

02-->22-->20-->00-->02

(最后一行这个变换跟第一行操作的是同一组元素,不会真的进行,只是为了表达单元格坐标见的关系。)

上图中第一二列,相邻近的子列是相同的,相远离的子列,相加得n-1.

再来看个大一点的例子:

00会跑到03的位置,03会跑到33的位置....下图标出了这样的一组单元格(蓝色填充):

01会跑到13的位置,13会跑到32的位置...这一组用红色表示:

02啥的同理,绿色表示:

如此一圈下来,外围的单元格都转完了,剩下里边一个2 x 2的表格。继续转....

 

循环地赋值,空间复杂度O(1)

1     # @param {integer[][]} matrix 2     # @return {void} Do not return anything, modify matrix in-place instead. 3     def rotate(matrix): 4         m=len(matrix) 5         if m<=1: 6             return 7         for i in range(m-1): 8             for j in range(i,m-1-i): 9                 z=matrix[i][j]10                 matrix[i][j]=matrix[m-1-j][i]11                 matrix[m-1-j][i]=matrix[m-1-i][m-1-j]12                 matrix[m-1-i][m-1-j]=matrix[j][m-1-i]13                 matrix[j][m-1-i]=z

 

转载于:https://www.cnblogs.com/acetseng/p/4703086.html

你可能感兴趣的文章
BZOJ4424/CF19E Fairy(dfs树+树上差分)
查看>>
简单的异步函数async/await例子
查看>>
windows无法启动MySQL服务报错1067的解决方法是怎样?
查看>>
redis范围查询应用 数据库 数据库学习 Redis redis范围查询的方法
查看>>
2. 尾部的零
查看>>
【ARC077F】SS
查看>>
php程序开发之实现网页跳转
查看>>
Python函数
查看>>
10-01 斐波那契数列
查看>>
mysql/MariaDB 搭建后创建密码及开启远程
查看>>
utf-8查找字符分隔
查看>>
poj 1191 棋盘分割
查看>>
java之集合类详解
查看>>
SpringMVC项目配置
查看>>
Java 正则表达式
查看>>
“数学之美”笔记
查看>>
同时启动多个Tomcat
查看>>
string.IsNullOrEmpty和string.IsNullOrWhiteSpace的区别
查看>>
js dom基本操作
查看>>
hive取数时如果遇到这种报错
查看>>