转圈打印矩阵

public class test27 {
    public static  void spiralOrderPrint(int[][] matrix){
        //左上角点行和列
        int tR = 0;
        int tC = 0;
        //右下角点行和列
        int dR = matrix.length-1;
        int dC = matrix[0].length -1;
        //左上方点往右下移动,右下方点往左上移动
        while (tR <= dR && tC <= dC){
            printEdge(matrix , tR++ , tC++ , dR-- , dC--);//每次
        }   
    }

    public static void printEdge(int[][] m ,int a , int b ,int c ,int d) {
//a行b列左上角点的位置,c行d列右下角点的位置
        if(a == c){//只剩一条横线,打印横线
            for(int i = b ; i <= d ; i++){
                System.out.println(m[a][i] + " ");
            }
        }else if(b ==d){//只剩一列竖线,打印竖线
            for(int i = a ; i <= c ; i++){
                System.out.println(m[i][b] + " ");
            }
        }else{
            int curC = b;
            int curR = a;
            while (curC != d){
                System.out.println(m[a][curC] +" ");
                curC++;
            }
            while (curR != c){
                System.out.println(m[curR][d] +" ");
                curR++;
            }
            while (curC != b){
                System.out.println(m[c][curC] +" ");
                curC--;
            }
            while (curR != a){
                System.out.println(m[curR][b] +" ");
                curR--;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值