一、题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
二、思路分析及代码实现
import java
.util
.ArrayList
;
public class Solution {
public ArrayList
<Integer> printMatrix(int [][] matrix
) {
ArrayList
<Integer> list
=new ArrayList<>();
int row
=matrix
.length
;
if(matrix
==null
)
return list
;
int col
=matrix
[0].length
;
int beginx
=0;
int beginy
=0;
int endx
=col
-1;
int endy
=row
-1;
while(beginx
<=endx
&&beginy
<=endy
){
for(int i
=beginx
;i
<=endx
;i
++){
list
.add(matrix
[beginy
][i
]);
}
if(endy
>beginy
){
for(int j
=beginy
+1;j
<=endy
;j
++){
list
.add(matrix
[j
][endx
]);
}
}
if(beginx
<endx
&&beginy
<endy
){
for(int i
=endx
-1;i
>=beginx
;i
--)
list
.add(matrix
[endy
][i
]);
}
if(beginx
<endx
&&beginy
<endy
)
for(int j
=endy
-1;j
>beginy
;j
--){
list
.add(matrix
[j
][beginx
]);
}
beginx
++;
beginy
++;
endy
--;
endx
--;
}
return list
;
}
}