zoukankan      html  css  js  c++  java
  • 面试题29:顺时针打印矩阵

    /**
     * @Author: Allen
     * @Version:v1.00
     * @CreateData:2018年4月2日 上午9:31:45
     *输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
     *例如,如果输入如下矩阵:
     *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 { public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix==null){ return null; } ArrayList<Integer> list=new ArrayList<Integer>(); int rows = matrix.length; int colums = matrix[0].length; int start=0; while(colums>start*2 && rows > start*2){ list.addAll(printMatrixInCircle(matrix,rows,colums,start)); start++; } return list; } private ArrayList<Integer> printMatrixInCircle(int [][] matrix,int rows, int colums,int start){ ArrayList<Integer> list = new ArrayList<Integer>(); int endX=colums-start-1; int endY=rows-start-1; //1.从左向右打印一行 for(int i=start; i<=endX; i++){ Integer num=matrix[start][i]; list.add(num); } //2.从上到下打印一列 if(endY>start){ for(int i=start+1; i<=endY; i++){ Integer num = matrix[i][endX]; list.add(num); } } //3.从右到左打印一行 if(endY>start && endX>start){ for(int i=endX-1; i>=start; i--){ Integer num = matrix[endY][i]; list.add(num); } } //4.从下到上打印一列 if(endY-1>start && endX>start){ for(int i=endY-1; i > start; i--){ Integer num = matrix[i][start]; list.add(num); } } return list; } }
  • 相关阅读:
    webOFBiz10.4
    堆栈知识
    eas bos二次开发总结[第三方jar、jcom、二次开发包放置]
    计算机编程英语词汇(三)
    计算机英语(四)
    KDTable 表达式应用工具类
    Verilog 流水线加法器
    datagridview 积累
    ajax 调用 webserver
    windows7 vs2008问题结合
  • 原文地址:https://www.cnblogs.com/Allen-win/p/8691578.html
Copyright © 2011-2022 走看看