import java.util.ArrayList; public class Solution { public static ArrayList<Integer> printClockwiseMatrix(int[][] matrix){ int sL=0; int sR=0;//第一个点(sL,sR) int eL=matrix.length-1; int eR=matrix[0].length-1;//最后一个点(eL,eR) //递归 ArrayList<Integer> list=new ArrayList<Integer>(); while(sL<=eL && sR<=eR){ list=printEdge(matrix,sL++,sR++,eL--,eR--,list); } return list; } public static ArrayList<Integer> printEdge(int[][] matrix,int sL,int sR,int eL,int eR,ArrayList<Integer> list){ if(sL==eL){//只有一行 for(int i=sR;i<=eR;i++){ list.add(matrix[sL][i]); } } else if(sR==eR){//只有一列 for(int i=sL;i<=eL;i++){ list.add(matrix[i][sR]); } } else{ int curL=sL; int curR=sR; while(curR!=eR){//打印1, 2, 3 list.add(matrix[sL][curR]); curR++; } while(curL!=eL){//打印4, 8, 12, list.add(matrix[curL][eR]); curL++; } while(curR!=sR){//打印16, 15, 14, list.add(matrix[eL][curR]); curR--; } while(curL!=sL){//打印13, 9, 5 list.add(matrix[curL][sR]); curL--; } } return list; } }