public ArrayList<Integer> printMatrix(int [][] matrix) {
        int lenRows = matrix.length;//矩阵的行长  
        int lenColumn = matrix[0].length;//列长 

        ArrayList<Integer> list = new ArrayList<Integer>();
        if(lenRows <= 0 || lenColumn <= 0||matrix==null){
            return list;
        }
        int start=0;//循环每次开始的点
        while(lenRows > start * 2 && lenColumn > start * 2 ){

            printMyResult(lenRows,lenColumn,start,list,matrix);
            
            ++start;
        }
        return list;
    }
    
    public void printMyResult(int lenRows,int lenColumn,int start,ArrayList<Integer> list,int[][] matrix){

        int endColumn = lenColumn-1-start;//终止列
        int endRows = lenRows-1-start;  //终止行


        
        /**
          *1.上面代码总是要打印的
          *2.右边代码打印必须是起始点小于终止行
          *3.下面代码实现必须是起始点小于终止行和终止列
          *4.左边代码执行的条件是起始点必须小于终止列,并且至少比终止行号小2
          */
        //上面代码
        for(int i = start; i <= endColumn ; i++){
            list.add((matrix[start][i]));
        }

        //右边实现......
        if( start < endRows){
            for(int i=start+1; i<= endRows ; i++){
                list.add((matrix[i][endColumn]));
            }
        }

        //下面代码实现
        if(start<endRows && start < endColumn){
            for(int i=endColumn-1; i >= start ; i--){
                list.add((matrix[endRows][i]));
            }
        }

        //左边实现
        if(start<endColumn&&start<endRows-1){
            for(int i = endRows-1 ; i > start; i--){
                list.add((matrix[i][start]));
            }
        }

    }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。