19 顺时针打印矩阵

2019-06-22  本文已影响0人  ShawnCaffeine

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

import java.util.ArrayList;
public class Solution {
      ArrayList<Integer> a=new ArrayList<Integer> ();
    public ArrayList<Integer> printMatrix(int [][] matrix) {
      
        int tr=0;
        int tc=0;
        int row=matrix.length-1;
        int col=matrix[0].length-1;
        while(tr<=row&&tc<=col){
            print(matrix,tr++,tc++,row--,col--); 
        }
       
        return a;
    }
        public void print(int [][] matrix, int tr,int tc,int row,int col){
            if(tr==row){                      //一横行
               
                   int cur_c1=tc; 
           //     if(cur_c1==col){                                   //如果只有一个数字就放进去
           //         a.add(matrix[tr][tc]);
            //    }                                          
              for(int i=tc;i<=col;i++){
                  a.add(matrix[tr][i]);
              }
               
               
            }else if(tc==col){
                 for(int j=tr;j<=row;j++){
                  a.add(matrix[j][tc]);
              }
                 
            }else{
                int cur_c=tc;
                int cur_r=tr;    //存储当前的行与列
                
                while(cur_c!=col){
                    a.add(matrix[tr][cur_c]);
                    cur_c++;
                }
                while(cur_r!=row){
                    a.add(matrix[cur_r][col]);
                    cur_r++;
                }
                 while(cur_c!=tc){
                    a.add(matrix[row][cur_c]);
                    cur_c--;
                }
                 while(cur_r!=tr){
                    a.add(matrix[cur_r][tc]);
                    cur_r--;
                }
               
            }
        }
        }
    
上一篇下一篇

猜你喜欢

热点阅读