剑指offer系列——19.顺时针打印矩阵
Posted xym4869
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer系列——19.顺时针打印矩阵相关的知识,希望对你有一定的参考价值。
Q:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
A:
vector<int> printMatrix(vector<vector<int> > matrix) {
int size1 = matrix[0].size(); //列数
int size2 = matrix.size(); //行数
int left = 0, top = 0;
int right = size1 - 1, down = size2 - 1;
vector<int> array;
if(matrix.empty())
return array;
while (true) {
for (int i = left; i <= right; i++)
array.push_back(matrix[top][i]);
if (++top > down)
break;
for (int j = top; j <= down; j++)
array.push_back(matrix[j][right]);
if (--right < left)
break;
for (int m = right; m >= left; m--)
array.push_back(matrix[down][m]);
if (--down < top)
break;
for (int n = down; n >= top; n--)
array.push_back(matrix[n][left]);
if (++left > right)
break;
}
return array;
}
P.S.这个题就是如何按顺序把矩阵输出出来。
以上是关于剑指offer系列——19.顺时针打印矩阵的主要内容,如果未能解决你的问题,请参考以下文章