zoukankan      html  css  js  c++  java
  • 剑指Offer19

    package javaOffer;

    import java.util.ArrayList;

    //顺时针打印矩阵
    // 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
    // 例如,如果输入如下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.
    public class o19_printMatrix_19 {
    public ArrayList<Integer> printMatrix(int[][] matrix) {
    ArrayList<Integer> result = new ArrayList<Integer>() ;
    if(matrix==null || matrix.length==0) { return result ; }

    printMatrixClockWisely(matrix, 0, 0, matrix.length - 1, matrix[0].length - 1, result);

    return result ;
    }

    public void printMatrixClockWisely(int[][] matrix, int startRow, int startCol, int endRow, int endCol, ArrayList<Integer> result) {
    if(startRow<endRow && startCol<endCol) {
    for(int j=startCol; j<=endCol; j++) { result.add(matrix[startRow][j]) ; } //Right
    for(int i=startRow+1; i<=endRow-1; i++) { result.add(matrix[i][endCol]) ; } //Down
    for(int j=endCol; j>=startCol; j--) { result.add(matrix[endRow][j]) ; } //Left
    for(int i=endRow-1; i>=startRow+1; i--) { result.add(matrix[i][startCol]) ; } //Up
    printMatrixClockWisely(matrix, startRow + 1, startCol + 1, endRow - 1, endCol - 1, result) ;
    }else if(startRow==endRow && startCol<endCol) {
    for(int j=startCol; j<=endCol; j++) { result.add(matrix[startRow][j]) ; }
    }else if(startRow<endRow && startCol==endCol) {
    for(int i=startRow; i<=endRow; i++) { result.add(matrix[i][endCol]) ; }
    }else if(startRow==endRow && startCol==endCol) {
    result.add(matrix[startRow][startCol]) ;
    }else {
    return ;
    }
    }
    }
  • 相关阅读:
    java基础知识--环境变量配置
    安装oracle11g时遇到INS-13001环境不满足最低要求
    MINA系列学习-IoBuffer
    MINA系列学习-mina整体介绍
    DBCP数据源连接池实现原理分析
    dbcp数据源配置杂谈
    Java 内存区域和GC机制分析
    网站的防盗链与反盗链的那点事
    这一天博客小院我进来了!
    AOP
  • 原文地址:https://www.cnblogs.com/fanzihao/p/11144593.html
Copyright © 2011-2022 走看看