您的位置:首页 > 其它

顺时针打印矩阵

2016-05-06 13:45 363 查看
问题描述:

对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。

给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。

测试样例:

[[1,2],[3,4]],2,2

返回:[1,2,4,3]

AC代码:

class Printer {
public:
vector<int> clockwisePrint(vector<vector<int> > mat, int n, int m) {
// write code here
vector<int> vec;
int bx=0,by=0,ex=n-1,ey=m-1,k;
while(bx<ex && by<ey){
for(k=by;k<=ey;k++)
vec.push_back(mat[bx][k]);
for(k=bx+1;k<=ex;k++)
vec.push_back(mat[k][ey]);
for(k=ey-1;k>=by;k--)
vec.push_back(mat[ex][k]);
for(k=ex-1;k>=bx+1;k--)
vec.push_back(mat[k][by]);
bx++;
by++;
ex--;
ey--;
}
if(bx==ex && by==ey)
vec.push_back(mat[bx][by]);
else if(bx==ex && by<ey)
for(k=by;k<=ey;k++)
vec.push_back(mat[bx][k]);
else if(by==ey && bx<ex)
for(k=bx;k<=ex;k++)
vec.push_back(mat[k][ey]);
return vec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: