题目描述
对于一个矩阵,请设计一个算法从左上角(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;
}
};
矩阵顺时针打印算法
本文介绍了一种从左上角开始顺时针打印矩阵元素的算法实现。通过定义边界来迭代地遍历矩阵的不同层,每次遍历时按顺序收集元素,直到所有元素都被打印。
32万+

被折叠的 条评论
为什么被折叠?



