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;
}
}
京公网安备 11010502036488号