顺时针打印矩阵
来源:互联网 发布:喜欢男朋友的丁丁知乎 编辑:程序博客网 时间:2024/05/18 15:24
题目见此链接
简单说一下思路:打印总共可分为四部,从左往右,从上到下,从右往左,从下到上。执行完这四步后,相当于对原矩阵剥了一层皮,可看成一个新的待打印矩阵。然后重复执行上述四步
class Solution {public: //如果只是输出打印数字的话,用递归方式更好 vector<int> printMatrix(vector<vector<int> > matrix) { int Col = matrix[0].size();//矩阵有多少列 int Row = matrix.size();//矩阵有多少行 vector<int>result;//输出矩阵 //下标 int index_row = 0; int index_col = 0; int circleCount = 1;//计算打印的圈数 //空矩阵 if(Col == 0 || Col == 0) return result; //矩阵存在且至少有两行两列 while(index_row < Row - 1 && index_col < Col - 1) { //打印从左往右的数据 for(;index_col < Col - 1;index_col ++) { result.push_back(matrix[index_row][index_col]); } //打印从上往下的数据 for(;index_row < Row - 1;index_row ++) { result.push_back(matrix[index_row][index_col]); } //打印从右往左的数据 for(;index_col >= circleCount; index_col --) { result.push_back(matrix[index_row][index_col]); } for(;index_row >= circleCount ; index_row --) { result.push_back(matrix[index_row][index_col]); } index_row ++; index_col ++; Col --; Row --; circleCount ++; } //处理只有一行(列)的情况 if(Col - 1 == index_col)//唯一列 { for(;index_row < Row;index_row ++) { result.push_back(matrix[index_row][index_col]); } return result; }else if(Row - 1 == index_row)//唯一行 { for(;index_col < Col;index_col ++) { result.push_back(matrix[index_row][index_col]); } return result; }else//此时为空 return result; }};
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- [问题记录.WinDbg]WinDbg 调试遇到 Failed to load data access DLL, 0x80004005
- windows server2008 安装mysql 5.5失败
- sscanf中%*s用法
- Redis redis.conf 重要选项配置
- 产品准备
- 顺时针打印矩阵
- Dubbo监控中心安装
- Linux命令(5)——shutdown命令
- Android 利用JS 实现对网络图片添加点击事件 查看大图
- android 微信支付问题总结
- darwin 架构
- Junit单元测试
- Android实战项目中常用依赖库整理
- 关于chrome浏览器插件的选择、安装、配置与使用的过程和结论