题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.*;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
int lena = matrix.length;
int lenb = matrix[0].length;
ArrayList<Integer> list = new ArrayList<Integer>();
int c = lena<=lenb?(lena+1)/2:(lenb+1)/2;
for(int i=0;i<c;i++){
for(int r=i;r<lenb-i;r++)list.add(matrix[i][r]);
for(int co=i+1;co<lena-i;co++)list.add(matrix[co][lenb-i-1]);
for(int ro=lenb-i-2;ro>=i&&lena-i-1!=i;ro--)list.add(matrix[lena-i-1][ro]);//第二个判断就是防止重复打印
for(int co2=lena-i-2;co2>i&&lenb-i-1!=i;co2--)list.add(matrix[co2][i]);//第二个判断就是防止重复打印
}
return list;
}
}