顺序打印矩阵

来源:互联网 发布:centos配置桥接模式 编辑:程序博客网 时间:2024/05/17 05:52
题目:

对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。

给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。


  public int[] clockwisePrint(int[][] mat, int n, int m) {
        int i=0;
        int[] index=new int[1];
        int [] result=new int[n*m];
        int temp=0;
        while(index[0]<n*m){
        getMat(mat,result,i,n-i,m-i,index);
        i++;
        }
        return result;
        
    }
    //s表示矩阵的起点
    public static void getMat(int[][] mat,int[] result,int s,int n,int m,int[] index){
      
        int i=s;
        int j=s;
        //循环的第一行的时候
        for(;j<m;j++){
            result[index[0]]=mat[i][j];
            index[0]++;
        }
        i++;
        j--;
        for(;i<n;i++){
            result[index[0]]=mat[i][j];
            index[0]++;
            //System.out.print(result[index]+" ");
        }
         if(index[0]>=m*n){
        return;
        }
        i--;
        j--;
        for(;j>=s;j--){
            result[index[0]++]=mat[i][j];
        }
        //第二列
        i--;
        j++;
        for(;i>s;i--){
            result[index[0]++]=mat[i][j];
        }
    }


原创粉丝点击