- 循环结束的条件是关键
public ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix==null)
{
return null;
}
int m = matrix.length;
int n = matrix[0].length;
int xa=0,ya=0;
int xb=0,yb=0;
int xc=0,yc=0;
int xd=0,yd=0;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i =0;i<m;i++)
{
if(2*i>=m||2*i>=n)
{
break;
}
xa=i;
ya=i;
xb=xa;
yb=n-1-ya;
xc=m-1-xa;
yc=ya;
xd=m-1-xa;
yd=n-1-ya;
if(ya<=yb)
{
for(int j = ya;j<=yb;j++)
{
list.add(matrix[xa][j]);
}
if(xd>xb)
{
for(int j=xb+1;j<=xd;j++)
{
list.add(matrix[j][yb]);
}
}
if(yc<yd&&xa<xc)
{
for(int j=yd-1;j>=yc;j--)
{
list.add(matrix[xc][j]);
}
}
if(xc-xa>1&&yd>yc)
{
for(int j=xc-1;j>xa;j--)
{
list.add(matrix[j][xa]);
}
}
}
else{
break;
}
}
return list;
}