java 輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,
阿新 • • 發佈:2019-01-29
題目描述
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣: 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<Integer>(); read(matrix,list,0); return list; } public void read(int [][] matrix,ArrayList list,int start){ int row=matrix.length; int col=matrix[0].length; if( matrix==null || col < 1 || row < 1 || start < 0 ) return; if( col <= 2*start || row <= 2*start ) return; int stopX = col - 1 - start;//一圈最右列在座標中的位置 int stopY = row - 1 - start;//一圈最大行在座標中位置 //列印此圈中的最上行 for( int i=start; i<=stopX; i++) list.add(matrix[start][i]); //列印此圈中的最右列 if(start <= stopX) //如果此圈中至少有一列 for(int i=start+1; i<=stopY; i++) list.add(matrix[i][stopX]); //列印次圈中的最下行 if(start < stopX && start < stopY) for(int i=stopX-1; i >= start; i--) list.add(matrix[stopY][i]); //列印次圈中的最左行 if(start < stopX && start < stopY - 1) for(int i=stopY-1; i >= start+1; i--) list.add(matrix[i][start]); read(matrix,list,start+1); } }