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 ;
    }
    }
    }
  • 相关阅读:
    前端学习笔记系列一:5 在项目中引入阿里图标icon
    前端学习笔记系列一:3 Vue中的nextTick
    前端学习笔记系列一:4 vue中@click.native
    学习习惯
    美团作价27亿美元正式收购摩拜
    北京 一卡通 退卡
    愚人自以慧,智者自以愚。
    袁隆平分享8字成功经验
    性能计数器 叹号
    升级 windows 2016
  • 原文地址:https://www.cnblogs.com/fanzihao/p/11144593.html
Copyright © 2011-2022 走看看