• 转圈打印矩阵


     给定一个整型矩阵matrix,请按照转圈的方式打印它。

      例如: 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

     【要求】 额外空间复杂度为O(1)。

     1 package my_basic.class_3;
     2 
     3 /*转圈打印矩阵*/
     4 public class Code_05_PrintMatrixSpiralOrder {
     5     public static void spiralOrderPrint(int[][] matrix) {
     6         int tr = 0;
     7         int tc = 0;
     8         int dr = matrix.length-1;
     9         int dc = matrix[0].length-1;
    10         while(tr <= dr && tc <= dc) {
    11             printEdge(matrix,tr++,tc++,dr--,dc--);
    12         }
    13     }
    14     
    15     public static void printEdge(int[][] matrix, int tr, int tc, int dr, int dc) {
    16         if (tr == dr) {  /*打印一横*/
    17             for (int i = tc; i <= dc ; i++) {
    18                 System.out.println(matrix[tr][i]);
    19             }
    20         }else if(tc == dc) {   /*打印一列*/
    21             for (int i = tr; i <= dr ; i++) {
    22                 System.out.println(matrix[i][tc]);
    23             }
    24         }else {
    25             int curC = tc;
    26             int curR = tr;
    27             
    28             while (curC != dr) {
    29                 System.out.print(matrix[tr][curC] + " ");
    30                 curC++;
    31             }
    32             while (curR != dc) {
    33                 System.out.print(matrix[curR][dc] + " ");
    34                 curR++;
    35             }
    36             while(curC != tc) {
    37                 System.out.print(matrix[dr][curC] + " ");
    38                 curC--;
    39             }
    40             while(curR != tr) {
    41                 System.out.print(matrix[curR][tc] + " ");
    42                 curR--;
    43             }
    44             
    45         }
    46     }
    47     
    48     public static void main(String[] args) {
    49         int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
    50                 { 13, 14, 15, 16 } };
    51         spiralOrderPrint(matrix);
    52     }
    53 }
  • 相关阅读:
    IOS开发之-Xcode插件
    IOS开发之-NS**概述
    python 中文乱码 问题深入分析
    Django入门示例之被解放的姜戈——03 所谓伊人(模板及模板处理)
    td太多内容显示...
    div 居中CSS实现
    取得页面元素类型 转
    aspose.words 处理word转PDF
    jacob 操作word转pdf
    ajax 数据回传
  • 原文地址:https://www.cnblogs.com/lihuazhu/p/10835746.html
Copyright © 2020-2023  润新知