形象的傻瓜写法

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] arr) {
       int col=arr[0].length; //列
        int row=arr.length; //行
        ArrayList result=new ArrayList<>();

        int top=0,bottom=0,left=0,right=0;


        while(true) {

            if((top+bottom)==row||(left+right)==col) break;  //四个值只要有一个变化就检查是否已经遍历完

            //右方向
            for(int j=left;j<col-right;j++)  result.add(arr[top][j]);
            top++;

            if((top+bottom)==row||(left+right)==col) break;    //四个值只要有一个变化就检查是否已经遍历完

            //下方向
            for(int i=top;i<row-bottom;i++)  result.add(arr[i][col-1-right]);
            right++;

            if((top+bottom)==row||(left+right)==col) break;    //四个值只要有一个变化就检查是否已经遍历完

            //左方向
            for(int j=col-1-right;j>=left;j--) result.add(arr[row-1-bottom][j]);
            bottom++;
            //上方向

            if((top+bottom)==row||(left+right)==col) break;    //四个值只要有一个变化就检查是否已经遍历完

            for(int i=row-1-bottom;i>=top;i--) result.add(arr[i][left]);
            left++;


        }





        return result;
    }
}