zoukankan      html  css  js  c++  java
  • 转圈打印矩阵

    给定一个整型矩阵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)。

    Code

    //coding=utf8                                                                                                         /*****************************************************
     @Author: Alex
     @Created Time : Tue 27 Aug 2019 08:48:30 AM CST
    
     @File Name: main.java
     @Blog: https://blog.csdn.net/weixin_43336281
    
     ****************************************************/
    
    public class main{
        public static void PrintMatrix(int[][] matrix, int leftRow, int leftColumn, int rightRow, int rightColumn) {
            if (leftRow == rightRow) {
                for (int i = leftColumn; i < (rightColumn + 1); i++)
                    System.out.println(matrix[leftRow][i] + " ");
            } else if (leftColumn == rightColumn) {
                for (int i = leftRow; i < (rightRow + 1); i++)
                    System.out.println(matrix[i][leftColumn] + " ");
            } else {
                int curRow = leftRow, curColumn = leftColumn;
    
                for(; curColumn != rightColumn; curColumn++)
                    System.out.println(matrix[leftRow][curColumn] + " ");
                for(; curRow != rightRow; curRow++)
                    System.out.println(matrix[curRow][rightColumn]);
                for(; curColumn != leftColumn; curColumn--)
                    System.out.println(matrix[rightRow][curColumn]);
                for(; curRow != leftRow; curRow--)
                    System.out.println(matrix[curRow][leftColumn]);
            }
        }
    
        public static void CirclePrintingMatrix(int [][] matrix){
            int leftRow = 0, leftColumn = 0;
            int rightRow = matrix.length - 1, rightColumn = matrix[0].length - 1;
    
            while(leftRow < (rightRow + 1) && leftColumn < (rightColumn + 1))
                PrintMatrix(matrix, leftRow++, leftColumn++, rightRow--, rightColumn--);
        }
    
        public static void main(String[] args){
            int [][] matrix = {
                {1,2,3,4},
                {5,6,7,8},
                {9,10,11,12},
                {13,14,15,16}
            };
            CirclePrintingMatrix(matrix);
        }
    }
    
  • 相关阅读:
    HDU 2095 find your present (2) (异或)
    UESTC 486 Good Morning (水题+坑!)
    UVa 111 History Grading (简单DP,LIS或LCS)
    UVa 11292 Dragon of Loowater (水题,排序)
    HDU 1503 Advanced Fruits (LCS+DP+递归)
    UVa 10881 Piotr's Ants (等价变换)
    UVa 11178 Morley's Theorem (几何问题)
    HDU 1285 确定比赛名次(拓扑排序)
    .net Core的例子
    TCP与UDP的区别
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338082.html
Copyright © 2011-2022 走看看