您的位置:首页 > 其它

旋转打印矩阵。这个题目我见过很多次都是放弃了。

2016-03-20 16:34 435 查看
题目描述

对于一个矩阵,请设计一个算法从左上角(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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: