lintcode---旋转图形
来源:互联网 发布:男士去油洗面奶 知乎 编辑:程序博客网 时间:2024/06/01 07:26
题目描述:|
给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。
样例:给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]
思路分析:
由于是一个n*n的矩阵,所以不用考虑m*n那样的情况,我们通过一个4*4的矩阵演示,发现所谓的旋转图像就是把矩阵每一圈的数值向前平移n-1个的单位,这个有点像前面的一维数组平移问题,只不过这里将一维数组变成了矩阵周围的一圈(正方形),所以我们只需要对每一圈进行处理,然后递归调用这个函数就可以实现所有的数字平移n-1,这样就使得整个矩阵旋转了。
代码详解:
class Solution {public: /* * @param matrix: a lists of integers * @return: */ void rotate(vector<vector<int>> &matrix) { // write your code here int length=matrix.size(); int loop=length/2;//递归调用的次数 for(int i=0;i<loop;i++) { rotateloop(matrix,i); } } void rotateloop(vector<vector<int>> &matrix,int a)//对每一个圈的处理 { int length=matrix.size(); int n=length-2*a; int *temp=new int[n-1];//保存边上的所有数据 int flag=0;//record temp position for(int i=length-a-1;i>a;i--)//首先最后一条边的数字保存起来 { temp[flag]=matrix[i][a]; flag++; } flag=0; for(int i=a;i<length-a-1;i++)//将最后一条边的数字赋值给第一条边,并把第一条边的值保存起来 { int temp_int=matrix[a][i]; matrix[a][i]=temp[flag]; temp[flag]=temp_int; flag++; } flag=0; for(int i=a;i<length-a-1;i++)//将第一条边的数字赋值给第二条边,并把第二条边的值保存起来 { int temp_int=matrix[i][length-a-1]; matrix[i][length-a-1]=temp[flag]; temp[flag]=temp_int; flag++; } flag=0; for(int i=length-a-1;i>a;i--)//将第二条边的数字赋值给第三条边,并把第三条边的值保存起来 { int temp_int=matrix[length-a-1][i]; matrix[length-a-1][i]=temp[flag]; temp[flag]=temp_int; flag++; } flag=0; for(int i=length-a-1;i>a;i--)//将第三条边的数字赋值给第四条边 { int temp_int=matrix[i][a]; matrix[i][a]=temp[flag]; temp[flag]=temp_int; flag++; } }};
阅读全文
0 0
- lintcode---旋转图形
- 图形旋转
- 图形旋转
- 图形旋转
- 旋转图形
- LintCode-旋转链表
- LintCode-旋转图像
- LintCode-旋转链表
- lintcode-旋转图像-161
- LintCode:旋转图像
- LintCode:旋转链表
- LintCode:旋转字符串
- lintcode ----旋转字符串
- LintCode:旋转图像
- Lintcode 恢复旋转数组
- LintCode 8 旋转字符串
- LintCode : 旋转链表
- LintCode 161-旋转图像
- 笨方法学习Python-习题23: 读代码
- 通过linux mail实现网站存活监控告警通知
- nginx配置
- crontab使用
- 讲给Android程序员看的前端教程(03)——HTML5标签(2)
- lintcode---旋转图形
- 敏捷武士:看敏捷高手交付卓越软件
- OpenGL学习: 环境纹理映射(environment mapping)
- 一项关于深度学习在医学影像分析中的调查
- 超出文本内容用...表示
- jsp调用java函数的方法
- 点击哪个元素显示哪个的序号,三种解法~
- Spark整合Hive
- easyui-window的z-index失效