public ArrayList<Integer> printMatrix(int [][] matrix) { int lenRows = matrix.length;//矩阵的行长 int lenColumn = matrix[0].length;//列长 ArrayList<Integer> list = new ArrayList<Integer>(); if(lenRows <= 0 || lenColumn <= 0||matrix==null){ return list; } int start=0;//循环每次开始的点 while(lenRows > start * 2 && lenColumn > start * 2 ){ printMyResult(lenRows,lenColumn,start,list,matrix); ++start; } return list; } public void printMyResult(int lenRows,int lenColumn,int start,ArrayList<Integer> list,int[][] matrix){ int endColumn = lenColumn-1-start;//终止列 int endRows = lenRows-1-start; //终止行 /** *1.上面代码总是要打印的 *2.右边代码打印必须是起始点小于终止行 *3.下面代码实现必须是起始点小于终止行和终止列 *4.左边代码执行的条件是起始点必须小于终止列,并且至少比终止行号小2 */ //上面代码 for(int i = start; i <= endColumn ; i++){ list.add((matrix[start][i])); } //右边实现...... if( start < endRows){ for(int i=start+1; i<= endRows ; i++){ list.add((matrix[i][endColumn])); } } //下面代码实现 if(start<endRows && start < endColumn){ for(int i=endColumn-1; i >= start ; i--){ list.add((matrix[endRows][i])); } } //左边实现 if(start<endColumn&&start<endRows-1){ for(int i = endRows-1 ; i > start; i--){ list.add((matrix[i][start])); } } }
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
猜你喜欢
转载自www.cnblogs.com/q-1993/p/10681348.html
今日推荐
周排行