剑指offer 顺时针打印矩阵
来源:互联网 发布:计价软件怎么用 编辑:程序博客网 时间:2024/05/29 04:07
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
解题思路:这是一个回形矩阵问题,每次一个回形就是一个右,下,左,上,走完一圈,那么回形矩阵row-2,col-2,注意一定走完一次特判一次。。
代码:
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix){ vector<int>ans; ans.clear(); int len_x = matrix[0].size(); int len_y = matrix.size(); int cnt = len_x*len_y; int x,y; x=y=0; while(cnt) { ans.push_back(matrix[x][y]); cnt--; for(int i=0;i<len_x-1;i++) { cnt--; y++; ans.push_back(matrix[x][y]); } if(!cnt) break; for(int i=0;i<len_y-1;i++) { cnt--; x++; ans.push_back(matrix[x][y]); } if(!cnt) break; for(int i=0;i<len_x-1;i++) { cnt--; y--; ans.push_back(matrix[x][y]); } if(!cnt) break; for(int i=0;i<len_y-2;i++) { cnt--; x--; ans.push_back(matrix[x][y]); } if(cnt==0) break; y++; len_x = len_x-2; len_y = len_y-2; if(len_x<=0||len_y<=0) break; } return ans; }};
阅读全文
0 0
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- [剑指offer]顺时针打印矩阵
- 《剑指offer》-顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer|顺时针打印矩阵
- 《剑指offer》顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵
- mybatis中错误记录(1)
- 2017年10月26日提高组T3 幸运值
- 实现对一个8bit数据(unsigned char)类型的指定位的置0或置1操作,并保持其他位不变
- @JoinTable和@JoinColumn
- freemarker导出word文档
- 剑指offer 顺时针打印矩阵
- android 改变listview的item宽高和让整个item布局居中显示的方式
- LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 【NOIP模拟】 (10.26) T2 做运动
- Anaconda3下XGBoost的安装与配置
- hashmap出现重复key的情况
- 在Mac上Git的使用(四)
- SpringMVC注解大全@Controller、@RequestMapping、@Resource和@Autowired等等
- jedis returnResource(jedis)问题