LeetCode中二维数组如何实现旋转矩阵
这篇文章给大家分享的是有关LeetCode中二维数组如何实现旋转矩阵的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都网站制作、成都做网站、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元邯山做网站,已为上家服务,为邯山各地企业和个人服务,联系电话:028-86922220
题目描述:“给衣服N*N的矩阵表示图像,其中每个像素的大小为4字节,设计一个算法,图像旋转90度”
示例:
matrix=[[1, 2, 3],[4, 5, 6],[7, 8, 9]]
round_matrix=[[7, 4, 1],[8, 5, 2],[9, 6, 3]]
第一次尝试
观察数组旋转的规律,可以创建一个新的二维数组,利用循环将数据元素按照旋转规律输入到新建二维数组中
注意:range(start, stop, -1)从大到小遍历的时候,也只是取到stop+1 的下标位置
虽然该方法解决了问题,但是占据了额外的内存(创建了新的二维数组)
算法优化——不占据额外内存
不占据内存则不能创建新的变量,而是在原数组上变动
矩阵的旋转有特别规律:
首先将矩阵的对角线元素交换
对每一行(一维数组)逆序排列
注意:
python变量交换语法:
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
两层循环遍历的时候,注意第二层循环不是从0开始,不然每一种情况就会出现重复,最终回到原点。而是从上一个循环的 i开始遍历。在对角线交换元素中最后一次交换,就是右下角的元素与自己交换,只有一次交换。如果从0开始,那每一个i都有三个交换
for i in range(len(matrix[0])): for j in range(i, len(matrix)):
感谢各位的阅读!关于“LeetCode中二维数组如何实现旋转矩阵”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
分享标题:LeetCode中二维数组如何实现旋转矩阵
路径分享:http://scyanting.com/article/ghsscd.html