题目描述:输入一个矩阵,按照从外向里以顺时针的顺组依次打印出每一个数字。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> result=new ArrayList<Integer>();
if(matrix==null||matrix.length<=0||matrix[0].length<=0){
return result;
}
int up=0;
int down=matrix.length-1;
int left=0;
int right=matrix[0].length-1;
while(left<=right&&up<=down){
//从左到右打印一行
for(int i=left;i<=right;i++){
result.add(matrix[up][i]);
}
up++;
//从上到下打印一列
for(int i=up;i<=down;i++){
result.add(matrix[i][right]);
}
right--;
//从右到左打印一行,if判断是否有下一行需要打印
if(up-1!=down){
for(int i=right;i>=left;i--){
result.add(matrix[down][i]);
}
}
down--;
//从下到上打印一列 ,if判断是否还有下一列需要打印
if(left!=right+1){
for(int i=down;i>=up;i--){
result.add(matrix[i][left]);
}
}
left++;
}
return result;
}
}