import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list= new ArrayList<>();
if(matrix.length == 0||matrix[0].length == 0) return list;
int left=0,right=matrix[0].length-1;
int up=0,down=matrix.length-1;
while(left<=right && up<=down){
for(int i=left;i<=right;i++) list.add(matrix[up][i]);
up++;
for(int i=up;i<=down;i++) list.add(matrix[i][right]);
right--;
if(up>down || left>right) break; // 如果仅有一列或者一行,在这个判断结束的时候可以跳出
for(int i=right;i>=left;i--) list.add(matrix[down][i]);
down--;
for(int i=down;i>=up;i--) list.add(matrix[i][left]);
left++;
}
return list;
}
}
设置上下左右4个指针,用来控制矩阵的打印。需要注意只有一行或者一列的情况:这时候通过内循环的前两个循环就可以完全输出,不需要进行后两个循环。