题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
牛客网题目链接
解题思路
回顾题目我们可以发现,其实是一圈一圈地输出,我们只要控制好在第几圈就行,并注意下标,防止越界访问。
可参考斐波那契蛇
代码实现
class Solution {
public:
vector
<int> printMatrix(vector
<vector
<int> > matrix
) {
vector
<int>res
;
if(matrix
.empty())return res
;
int loop
=0;
while(2*loop
<matrix
[0].size()&&2*loop
<matrix
.size()){
hour(matrix
,matrix
.size(),matrix
[0].size(),loop
,res
);
loop
++;
}
return res
;
}
void hour(vector
<vector
<int> >matrix
,int row
,int col
,int loop
,vector
<int> &res
){
int i
;
for(i
=loop
;i
<col
-loop
;i
++)res
.push_back(matrix
[loop
][i
]);
for(i
=loop
+1;i
<row
-loop
;i
++)res
.push_back(matrix
[i
][col
-loop
-1]);
for(i
=col
-loop
-2;i
>=loop
&&row
-loop
-1>loop
;i
--)res
.push_back(matrix
[row
-loop
-1][i
]);
for(i
=row
-loop
-2;i
>loop
&&col
-loop
-1>loop
;i
--)res
.push_back(matrix
[i
][loop
]);
}
};
运行时间:
3ms
占用内存:
376k