标签:title 打印 imp class 输入 new 第一个 while 条件
1 import java.util.ArrayList; 2 public class Solution { 3 public ArrayList<Integer> printMatrix(int [][] matrix) { 4 ArrayList<Integer> result = new ArrayList<Integer>(); 5 if(matrix == null || matrix.length == 0){ 6 return result; 7 } 8 int start = 0; 9 int rows = matrix.length; 10 int columns = matrix[0].length; 11 while(matrix.length>start*2 && matrix[0].length>start*2){ 12 printMatrixInCircle(matrix, columns, rows, start, result); 13 start++; 14 } 15 return result; 16 } 17 public void printMatrixInCircle(int[][] matrix, int columns, int rows, int start, ArrayList<Integer> result){ 18 int endX = columns-start-1; 19 int endY = rows-start-1; 20 //从左往右打印一行 21 for(int i=start; i<=endX; i++){ 22 result.add(matrix[start][i]); 23 } 24 //从上到下打印一列 圈内至少两行 25 //要求终止行号大于起始行号 26 if(endY>start){ 27 for(int i=start+1; i<=endY; i++){ 28 result.add(matrix[i][endX]); 29 } 30 } 31 //从右往左打印一行 圈内至少有两行两列 32 //要求终止行号大于起始行号,同时终止列号大于起始行号 33 if(endY>start && endX>start){ 34 for(int i=endX-1; i>=start; i--){ 35 result.add(matrix[endY][i]); 36 } 37 } 38 //从下往上打印一列,圈内至少三行两列 39 //要求终止行号比起始行号至少大2,终止列号大于起始列号 40 if(endY-1>start && endX>start){ 41 for(int i=endY-1; i>start; i--){ 42 result.add(matrix[i][start]); 43 } 44 } 45 } 46 }
标签:title 打印 imp class 输入 new 第一个 while 条件
原文地址:http://www.cnblogs.com/2390624885a/p/6718589.html