順序打印矩陣

題目:

對於一個矩陣,請設計一個算法從左上角(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];
        }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章