顺时针打印矩阵
1.课本简单很详细! 容器用起来和数组差不多
class Solution { public: //这个是要根据容器返回值来判断的!! vector<int> printMatrix(vector<vector<int> > matrix) { //是二维的容器 允许下标 //判断条件 vector<int> res;//一开始定义是空的 if(matrix.empty()) return res; //返回空容器即可 int rows=matrix.size(); int colums=matrix[0].size(); int start=0; while ((2*start<rows)&&(2*start<colums)) //这个for循环是圈数 //现在这种情况传过来传过去的麻烦 放一起吧 { int endx=colums-1-start; //每次的终止行号 int endy=rows-1-start; //每次的终止列号 //弄成实际的有好处 //一 打印从左向右 这个是必须的! for(int i=start;i<=endx;i++) { int number=matrix[start][i]; res.push_back(number); } //二 打印从右向下 判断终止行号大于起止行号 if(start<endy) { for(int i=start+1;i<=endy;i++)//i代表列 { int number=matrix[i][endx]; res.push_back(number); } } //三 打印从右向左 判断终止行号大于起止行号 终止列号大于起止列号 if(start<endy&&start<endx) { for(int i=endx-1;i>=start;--i)//i代表行 { int number=matrix[endy][i]; res.push_back(number); } } //四 打印从下向上 判断终止行号大于起止行号 终止列号比起止列号至少大2 if(start<endx&& (endy-start>1))//至少大于等于2 { for(int i=endy-1;i>=start+1;--i)//i代表列 //不用打到头 { int number=matrix[i][start]; res.push_back(number); } } start++; } return res; } };