题目
分析
顺时针打印矩阵
代码
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list = new ArrayList<>();
if(matrix==null||matrix.length<=0||matrix[0].length<=0){
return list;
}
int rows=matrix.length;
int cols=matrix[0].length;
int index=0;
while (2*index<rows&&2*index<cols){
add(matrix,index,list);
index++;
}
return list;
}
public void add(int[][] matrix,int index,ArrayList<Integer> result){
int rows=matrix.length;
int cols=matrix[0].length;
int endx=cols-1-index;
int endy=rows-1-index;
//从左到右
for(int i=index;i<=endx;i++){
result.add(matrix[index][i]);
}
//从上到下
if(index<endy){//到了右上角之后,大于两行才能从上到下
for(int i=index+1;i<=endy;i++){
result.add(matrix[i][endx]);
}
}
//从右到左
if(index<endx&&index<endy){//到了右下角后只有>=两行,>=两列才能从右到左。
for(int i=endx-1;i>=index;i--){
result.add(matrix[endy][i]);
}
}
//从下到上
if(index<endx&&index<endy-1){//到了左下角后只有>=三行,>=两列才能从下到上。
for(int i=endy-1;i>index;i--){
result.add(matrix[i][index]);
}
}
}
}