zoukankan      html  css  js  c++  java
  • 剑指Offer(Java版)第二十四题:顺时针打印矩阵

    /*
    顺时针打印矩阵
    */
    public class Class24 {

    public void printMatrix(int[][] matrix){
    if(matrix == null || matrix.length <= 0){
    return;
    }else{
    printMatrixCircle(matrix,0);
    }
    }
    //index代表一个控制符,来控制打印的范围
    public void printMatrixCircle(int[][] matrix,int index){
    int row = matrix.length;
    int col = matrix[0].length;
    int endX = col - index - 1;
    int endY = row - index - 1;
    if(endX < index || endY < index){
    return;
    }
    //仅一列
    if(endX == index){
    for(int i = index; i <= endY; i++){
    System.out.print(matrix[i][index] + " ");
    }
    return;
    }
    //仅一行
    if(endY == index){
    for(int i = index; i <= endX; i++){
    System.out.print(matrix[index][i] + " ");
    }
    return;
    }
    //开始打印边界
    //步骤一
    for(int i = index; i <= endX; i++){
    System.out.print(matrix[index][i] + " ");
    }
    //步骤二
    for(int i = index + 1; i <= endY; i++){
    System.out.print(matrix[i][endX] + " ");
    }
    //步骤三
    for(int i = endX - 1; i >= index; i--){
    System.out.print(matrix[endY][i] + " ");
    }
    //步骤四
    for(int i = endY - 1; i >= index + 1; i--){
    System.out.print(matrix[i][index] + " ");
    }
    printMatrixCircle(matrix,index + 1);
    }

    public void test(int[][] matrix){
    printMatrix(matrix);
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Class24 c = new Class24();
    int[][] a = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    c.printMatrix(a);
    }

    }

  • 相关阅读:
    linux下golang的配置
    为什么有闭包?
    分布式之高性能IO组件
    ECMAScript 5.1 Edition DOC 学习笔记
    直线光栅画法
    【计算机基础】三、指令与指令执行过程
    ThreadLocal的使用
    【设计模式】单例模式
    问题记录
    【Java基础】- 泛型
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12507121.html
Copyright © 2011-2022 走看看