顺时针打印矩阵
来源:互联网 发布:足球球员数据统计表格 编辑:程序博客网 时间:2024/05/21 17:57
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { int row,col,num,cnt=0; vector<int> res; row=matrix.size(); col=matrix[0].size(); num=row*col; for(int cir=0;cir<(row+1)/2;++cir){ for(int i=cir;i<col-cir;++i){ if(cnt==num) break; ++cnt; res.push_back(matrix[cir][i]); } for(int i=cir+1;i<row-1-cir;++i){ if(cnt==num) break; ++cnt; res.push_back(matrix[i][col-cir-1]); } for(int i=col-1-cir;i>=cir;--i){ if(cnt==num) break; ++cnt; res.push_back(matrix[row-1-cir][i]); } for(int i=row-2-cir;i>cir;--i){ if(cnt==num) break; ++cnt; res.push_back(matrix[i][cir]); } } return res; }};
PAT乙级里编过B1050,可以直接在我博客里搜。
因为我的方法不是最简单的。。。。所以下面我贴出前辈简洁点的代码。
//上地class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { int row = matrix.size(); int col = matrix[0].size(); vector<int> res; // 输入的二维数组非法,返回空的数组 if (row == 0 || col == 0) return res; // 定义四个关键变量,表示左上和右下的打印范围 int left = 0, top = 0, right = col - 1, bottom = row - 1; while (left <= right && top <= bottom) { // left to right for (int i = left; i <= right; ++i) res.push_back(matrix[top][i]); // top to bottom for (int i = top + 1; i <= bottom; ++i) res.push_back(matrix[i][right]); // right to left if (top != bottom) for (int i = right - 1; i >= left; --i) res.push_back(matrix[bottom][i]); // bottom to top if (left != right) for (int i = bottom - 1; i > top; --i) res.push_back(matrix[i][left]); left++,top++,right--,bottom--; } return res; }};
使用left这类数据来判断循环是否结束,比我的cnt不知道高到哪里去。
而且if (top != bottom)这两句的知识水平非常高。
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 【Algothrim】 集合竞价
- jQuery中使用Ajax获取JSON格式数据示例代码
- CSU 1009 抛硬币(贪心)
- -bash: wget: command not found的两种解决方法
- C++作业4
- 顺时针打印矩阵
- Android 隐藏软键盘、进出动画、图片进行缩放
- 在Ubuntu 14.04 上安装 Xmind
- DatePicker隐藏“天”选择
- 微信小程序 图片宽度自动
- int float double BigDecimal
- 7Java学习笔记之数据结构——HashMap
- 【个人笔记重点,不作为参考】主题:angular2.0笔记
- 直方图内最大矩形:用栈实现一些之前可以确定的值。