• 剑指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 ;
    }
    }
    }
  • 相关阅读:
    搭建前端监控系统(备选)Js截图上报篇
    搭建前端监控系统(三)静态资源加载监控篇
    搭建前端监控系统(一)阿里云服务器搭建篇
    springboot+缓存
    springboot集成springDataJpa
    从零开始搭建SpringBoot项目
    Java1.8的HashMap源码解析
    SpringMvc流程分析,简单源码分析
    Java定时任务
    Java性能调优
  • 原文地址:https://www.cnblogs.com/fanzihao/p/11144593.html
Copyright © 2020-2023  润新知