题目描述
对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。
给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
测试样例:
[[1,2],[3,4]],2,2
返回:[1,2,4,3]
class Printer {
public:
vector<int> clockwisePrint(vector<vector<int> > mat, int n, int m) {
vector<int>result;
int left=-1;
int right=m;
int top=0;
int down=n;
int total=n*m;
int count=0;
int i=0,j=0;
while(true)
{
for(j;j<right;j++){
result.push_back(mat[i][j]);
count++;
}
right--;
j=right;
i++;
if(count>=total){
break;
}
for(i;i<down;i++){
result.push_back(mat[i][j]);
count++;
}
down--;
i=down;
j--;
if(count>=total){
break;
}
for(j;j>left;j--){
result.push_back(mat[i][j]);
count++;
}
left++;
j=left;
i--;
if(count>=total){
break;
}
for(i;i>top;i--){
result.push_back(mat[i][j]);
count++;
}
top++;
i=top;
j++;
if(count>=total){
break;
}
}
return result;
}
};