FTPrep, 48 Rotate Image
来源:互联网 发布:球球大作战圣衣软件 编辑:程序博客网 时间:2024/05/30 23:22
3'
很快完成了,因为每个点都有以同一个通项公式进行转化,非常简单。但是这个有extra space,所以follow up 是O(1) 的空间怎么搞?
代码:
class Solution { public void rotate(int[][] matrix) { int len=matrix.length; if(len==0) return; int[][] newImg= new int[len][len]; for(int i=0; i<len; i++){ for(int j=0; j<len; j++){ newImg[j][len-1-i]=matrix[i][j]; } } for(int i=0; i<len; i++){ for(int j=0; j<len; j++){ matrix[i][j]=newImg[i][j]; } } // matrix=newImaga; // this does not work; }}
TODO:
O(1) 空间代码:
看代码中的bug记录, 当时只是套用上面的通项公式,没有完全懂整个过程。TODO: 一个点所对应的顺时针的其他3个点的坐标,通过画图很容易得到,是解题时的好工具。
关键:每一层只要把最上面的一排点旋转就可以了,而且随着层数深入,每一排的的点数是-2的,把矩阵想象成上下左右4个直角三角形,需要遍历的就是上面的那个三角形。
这样很容易形象记忆,代码如下:
class Solution { public void rotate(int[][] matrix) { int len=matrix.length; if(len==0) return; int layerLimit=len/2; for(int i=0; i<layerLimit; i++){ // bug: for(int i=0; i<len-1; i++) for(int j=i; j<len-1-i; j++){ // bug: for(int j=0; j<len-1; j++) int tmp=matrix[i][j]; matrix[i][j]=matrix[len-1-j][i]; matrix[len-1-j][i]=matrix[len-1-i][len-1-j]; matrix[len-1-i][len-1-j]=matrix[j][len-1-i]; matrix[j][len-1-i]=tmp; } } }}
阅读全文
0 0
- FTPrep, 48 Rotate Image
- FTPrep, 61 Rotate List
- [leetcode 48] Rotate Image
- 48、Rotate Image
- [LeetCode 48]Rotate Image
- leetcode || 48、Rotate Image
- leetcode-48 Rotate Image
- Rotate Image - LeetCode 48
- Leetcode 48: Rotate Image
- Leetcode #48 Rotate Image
- LeetCode(48) Rotate Image
- leetcode 48: Rotate Image
- 48Rotate Image
- Leetcode#48||Rotate Image
- [48]Rotate Image
- leetcode 48:Rotate Image
- 【leetcode】【48】Rotate Image
- LeetCode_OJ【48】Rotate Image
- 使用XMLWorkerHelper.getInstance().parseXHtml生成PDF时中文不显示或乱码问题
- php mysql中文排序失效解决方法convert(字段名 USING gbk)
- 字符串和编码
- 160个crackme之011
- Skyform-Cmp项目ui
- FTPrep, 48 Rotate Image
- Java IO--字节流与字符流OutputStream/InputStream/Writer/Reader
- 动手实操 | 如何用 Python 实现人脸识别
- 智能家居系统中网关与服务器如何连接?
- SVN项目迁移Gitlab实例版
- iOS开发,修改项目名称
- iOS开发入门笔记
- 剑指Offer LevelTraversalTree 层序遍历二叉树
- C#之集合概述