您的位置:首页 > 其它

顺时针打印矩阵

2017-12-18 17:04 169 查看
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int i =matrix.size();
int j=matrix[0].size();
vector<int> result;
if(i==0||j==0) return result;
int start1 = 0;//表示左上角元素的行和列
int start2 = 0;//列
int end1 = i-1, end2 = j-1;//右下角元素的行和列
while(start1<=end1 && start2<=end2){

for(int j = start2; j <= end2;j++)//第一行,从左到右
//cout << a[start1][j] << ",";
result.push_back(matrix[start1][j]);

for(int i = start1+1; i <= end1; i++)//最右边一列,从上到下
//cout << a[i][end2] << ",";
result.push_back(matrix[i][end2]);

if(start1 != end1){
for(int j=end2-1; j>start2; j--)//最下边一行,从右到左
//cout << a[end1][j] << ",";
result.push_back(matrix[end1][j]);
}

if(start2 != end2){
for(int i = end1; i > start1; i--)//最左边一列,从下到上
//cout << a[i][start2] << ",";
result.push_back(matrix[i][start2]);
}
end1--,end2--,start1++,start2++;
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: