Problem solving:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
//判断边界
if(matrix.length == 0){
return new ArrayList<Integer>(0);
}
//遍历方向--右下左上
//先定义四个边界的初始位置
int left = 0;
int right = matrix[0].length-1;
int down = matrix.length-1;
int up = 0;
//定义存放数据的list
ArrayList<Integer> list = new ArrayList((right+1) * (down+1));
//开始遍历
while(true){
//先往右
for(int i = left; i <= right; i++){
list.add(matrix[up][i]);
}
if(++up > down) break;
//往下
for(int i = up; i <= down; i++){
list.add(matrix[i][right]);
}
if(--right < left) break;
//往左
for(int i = right; i >= left; i--){
list.add(matrix[down][i]);
}
if(--down < up) break;
//往上
for(int i = down; i >= up; i--){
list.add(matrix[i][left]);
}
if(++left > right) break;
}
return list;
}
}