剑指offer-算法题练习:part21 顺时针打印矩阵
来源:互联网 发布:网络设计方案图 编辑:程序博客网 时间:2024/04/30 15:56
剑指offer-算法题练习:part21 顺时针打印矩阵
时间限制:1秒空间限制:32768K
本题知识点: 数组
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
<解析1>
用旋转魔法的方式,一直取出第一行;
例如
1 2 3
4 5 6
7 8 9
输出并删除第一行后,变为
4 5 6
7 8 9
再进行一次逆时针旋转,就变成:
6 9
5 8
4 7
继续重复上述操作即可。
code1
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> res; //res.clear(); int a=0,row = matrix.size()-1,col=matrix[0].size()-1,i,j; if(matrix.size()==0||matrix[0].size()==0) return res; do{ for(i=a, j=a;j<=col;j++) res.push_back(matrix[i][j]); for(i=a+1,j=col;i<=row;i++) res.push_back(matrix[i][j]); if(a!=row) for(i=row, j=col-1;j>=a ;j--) res.push_back(matrix[i][j]); if(a!=col) for(i=row-1,j=a ;i>=a+1;i--) res.push_back(matrix[i][j]); }while(++a<=--row&&a<=--col); return res; }};
code2
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { /*解题思路:顺时针打印就是按圈数循环打印,一圈包含两行或者两列, 在打印的时候会出现某一圈中只包含一行,要判断从左向右打印和从右向 左打印的时候是否会出现重复打印,同样只包含一列时, 要判断从上向下打印和从下向上打印的时候是否会出现重复打印的情况*/ vector<int> result; result.clear(); int row = matrix.size();//行数 int col = matrix[0].size();//列数 //计算打印的圈数 int circle=((row<col?row:col)-1)/2+1;//圈数 //int circle=((row<col?row:col)-1)/2+1;//圈数 for(int i = 0;i<circle;i++){ //从左向右打印 for(int j=i;j<col-i;j++) result.push_back(matrix[i][j]); //从上往下的每一列数据 for(int k=i+1;k<row-i;k++) result.push_back(matrix[k][col-1-i]); //判断是否会重复打印从右向左的每行数据 for(int m = col-i-2;(m>=i)&&(row-i-1 != i);m--) result.push_back(matrix[row-i-1][m]); //判断是否会重复打印从上往下的每行数据 for(int n = row-i-2;(n>i)&&(col-i-1 != i);n--) result.push_back(matrix[n][i]); }//for return result; }};
0 0
- 剑指offer-算法题练习:part21 顺时针打印矩阵
- 【剑指offer】题20:顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- [剑指offer]顺时针打印矩阵
- 《剑指offer》-顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer|顺时针打印矩阵
- 织梦列表页当前位置修改
- eclipse快捷键汇总
- 伪元素 :before 与 :after(10.19)
- jquery解密
- 无service.bat的tomcat服务怎么设置自启动
- 剑指offer-算法题练习:part21 顺时针打印矩阵
- 【Unity】Unity Microphone录音 保存wav 功能
- CSS基础学习3-CSS设置字体
- hostname设置不对,导致logback出错从而spring起不来的问题
- Windows Server 2003 启动过程详解及常见错误分析
- Unity与Android——Androidmanifest.xml文件的介绍
- 添加logviewer用户
- 缺陷模块报告的构成
- 关于跨平台信息传输数据-软件开发人员必备知识-软件发展的一大热门趋势