剑指offer-面试题20:顺时针打印矩阵

来源:互联网 发布:淘宝店家花呗怎么开通 编辑:程序博客网 时间:2024/06/03 23:44

题目

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

void PrintMatrixClockwisely(int[][] nums,int columns,int rows){        if(nums==null||columns<=0||rows<=0){            return;        }        int start=0;        while( columns>start*2 && rows>start*2){            //控制打印多少圈儿,            PrintMatrixInCircle(nums,columns,rows,start);            start++;        }    }    void PrintMatrixInCircle(int[][] nums, int columns, int rows, int start) {        int endX=columns-1-start;        int endY=columns-1-start;        //从左到右打印一行        for(int i=start;i<=endX;i++){            System.out.print(nums[start][i]+" ");        }        //从上到下打印一列        if(start<endY){            for(int i=start+1;i<=endY;i++ ){                System.out.print(nums[i][endX]+" ");            }                       }        //从右到左打印一行        if(start<endX && start<endY){            for(int i=endX-1;i>=start;i--){                System.out.print(nums[endY][i]+" ");            }        }        //从下到上打印一列        if(start<endX && start<endY-1){            for(int i=endY-1;i>=start+1;i--){                System.out.print(nums[i][start]+" ");            }        }           }
0 0
原创粉丝点击