Rotate Image
2015-06-09 15:35
357 查看
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?
代码如下:
观察90度转向之后的矩阵,我们可以将斜对角元素互换,之后按行逆序转换矩阵即可,如下图所示,(1--9,2--6,4--8):
代码如下:
Rotate the image by 90 degrees (clockwise).
Follow up:
Could you do this in-place?
题目解读:
将一个矩阵顺时针旋转90度。方法一:
如下图所示,先转置,之后和变换的单位矩阵相乘即可代码如下:
class Solution { public: void rotate(vector<vector<int>>& matrix) { if(matrix.size()==1) return; int n=matrix.size(); for(int i=0;i<n;i++) { for(int j=0;j<i;j++) { int temp=matrix[i][j]; matrix[i][j]=matrix[j][i]; matrix[j][i]=temp; } } vector<vector<int>> danwei; vector<int> temp1(n,0); vector<int> temp2; for(int i=0;i<n;i++) { temp2=temp1; temp2[n-1-i]=1; danwei.push_back(temp2); } for(int i=0;i<n;i++) { temp2.clear(); for(int j=0;j<n;j++) { int ji=0; for(int t=0;t<n;t++) ji+=matrix[i][t]*danwei[t][j]; temp2.push_back(ji); } matrix[i]=temp2; } } };方法二:
观察90度转向之后的矩阵,我们可以将斜对角元素互换,之后按行逆序转换矩阵即可,如下图所示,(1--9,2--6,4--8):
代码如下:
class Solution { public: void rotate(vector<vector<int>>& matrix) { if(matrix.size()==1) return; int n=matrix.size(); for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { int temp=matrix[i][j]; matrix[i][j]=matrix[n-1-j][n-1-i]; matrix[n-1-j][n-1-i]=temp; } } vector<int> temp1; for(int i=0;i<n/2;i++) { temp1=matrix[i]; matrix[i]=matrix[n-1-i]; matrix[n-1-i]=temp1; } } };
相关文章推荐
- Django+bootstrap配置过程
- VS插件开发获取当前编译启动项目
- PERL语言入门:第四章:子程序(函数):习题2:求1-100总和
- java基础复习之六:数据类型的转换
- 剑指offer之丑数
- Hybrid应用实例
- HDU-1041-Computer Transformation(规律题 && 大数题)
- c++ --> const关键字总结
- spring中的命名空间
- 那些让你相见恨晚的Photoshop技巧
- Android 动态库死机调试方法
- poj3249Test for Job解题报告
- WPF DockPanel
- C++9.7、9.8 容器适配器----queue、stack
- 关于mongoDb
- Ubuntu配置eclipse
- 白板编程浅谈——Why, What, How
- 彻底搞懂javascript中的match, exec的区别
- android开发连接wifi addNetwork 返回-1
- 想记录自己寻路的历程