顺时针打印矩阵

  • 循环结束的条件是关键
 public ArrayList<Integer> printMatrix(int [][] matrix) {
       if(matrix==null)
       {
           return null;
       }
       int m = matrix.length;
       int n = matrix[0].length;
       int xa=0,ya=0;
       int xb=0,yb=0;
       int xc=0,yc=0;
       int xd=0,yd=0;

       ArrayList<Integer> list = new ArrayList<Integer>();
  
       for(int i =0;i<m;i++)
       {
        if(2*i>=m||2*i>=n)
        {
            break;
        }
           xa=i;
           ya=i;

           xb=xa;
           yb=n-1-ya;

           xc=m-1-xa;
           yc=ya;

           xd=m-1-xa;
           yd=n-1-ya;

           if(ya<=yb)
           { 
               for(int j = ya;j<=yb;j++)
               {
                   list.add(matrix[xa][j]);
               }
               if(xd>xb)
               {
                   for(int j=xb+1;j<=xd;j++)
                   {
                       list.add(matrix[j][yb]);
                   }
               }
               if(yc<yd&&xa<xc)
               {
                   for(int j=yd-1;j>=yc;j--)
                   {
                       list.add(matrix[xc][j]);
                   }
               }
               if(xc-xa>1&&yd>yc)
               {
                   for(int j=xc-1;j>xa;j--)
                   {
                       list.add(matrix[j][xa]);
                   }
               }
           }
           else{
               break;
           }

       }
       return list;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。