剑指 Offer 29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
class Solution {
public int[] spiralOrder(int[][] matrix) {
//处理边界
if(matrix==null||matrix.length==0||matrix[0].length==0){
return new int[0];
}
//处理方向
int rows=matrix.length,columns =matrix[0].length;
int []order =new int[rows*columns];//要返回的数组
int index =0;//返回数组的下标
int left=0,right=columns-1,top=0,bottom =rows-1;
//进入循环
while(left<=right&&top<=bottom) {
//从左到右打印
for(int column=left;column<=right;column++) {
order[index++]=matrix[top][column];
}
//从上到下打印
for(int row=top+1;row<=bottom;row++) {
order[index++] =matrix[row][right];
}
if(left<right&&top<bottom) {
//下边 从右到左遍历
for(int column=right-1;column>left;column--) {
order[index++]=matrix[bottom][column];
}
for(int row=bottom;row>top;row--) {
order[index++]=matrix[row][left];
}
}
left++;
right--;
top++;
bottom--;
}
return order;
}
}