import java.util.ArrayList; /* round=0; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { int height=matrix.length; int width=matrix[0].length; if(width==0||height==0){ return null; } ArrayList<Integer>result=new ArrayList<>(); int h=height; int w=width; int round=0; int roundMax=0; if(height>=width){ roundMax=width/2; if(width%2==1){ roundMax++; } } if(width>=height){ roundMax=height/2; if(height%2==1){ roundMax++; } } while(round<=roundMax-1){ boolean h1=false; boolean r1=false; if(w-round-round>1){ r1=true; } for(int i=round;i<w-round;i++){ result.add(matrix[round][i]); } for(int i=round+1;i<h-round;i++){ result.add(matrix[i][w-1-round]); h1=true; } if(h1){ for(int i=w-2-round;i>=round;i--){ result.add(matrix[h-1-round][i]); } } if(r1){ for(int i=h-2-round;i>=round+1;i--){ result.add(matrix[i][round]); } } round++; } return result; } }