zoukankan      html  css  js  c++  java
  • 【剑指offer】19 顺时针打印矩阵

    题目地址:顺时针打印矩阵

    题目描述                                   

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
     

    题目示例                                   

    输入:
    [[1,2],[3,4]]
    返回值:
    [1,2,4,3]

    解法分析                                   

    从外向里一圈一圈地打印,可以理解为边界不断向内收缩的过程,步骤可以分解为:

    1.打印上边界,上边界向内(下)收缩;

    2.打印右边界,右边界向内(左)收缩;

    3.打印下边界,下边界向内(上)收缩;

    4.打印左边界,左边界向内(右)收缩;

    5.循环上述步骤直到满足边界条件。

    要注意收缩后判断上下、左右边界是否重合,以此作为跳出循环的边界条件。

    代码                                         

     1 function printMatrix(matrix)
     2 {
     3     // write code here
     4     var arr = [];
     5     var top = 0;
     6     var right = matrix[0].length - 1;
     7     var bottom = matrix.length - 1;
     8     var left = 0;
     9     if(matrix === null || matrix.length === 0 || matrix[0].length ===0) return arr;
    10     while(true){
    11         for(let col = left; col <= right; col++){
    12             arr.push(matrix[top][col]);
    13         }
    14         top++;
    15         if(top > bottom)break;
    16         for(let row = top; row <= bottom; row++){
    17             arr.push(matrix[row][right]);
    18         }
    19         right--;
    20         if(right < left)break;
    21         for(let col = right; col >= left; col--){
    22             arr.push(matrix[bottom][col]);
    23         }
    24         bottom--;
    25         if(bottom < top)break;
    26         for(let row = bottom; row >= top; row--){
    27             arr.push(matrix[row][left]);
    28         }
    29         left++;
    30         if(left > right)break;
    31     }
    32     return arr;
    33 }

    执行结果                                   

  • 相关阅读:
    iOS开发UI篇—字典转模型
    使用python编写批量卸载android应用的脚本
    CircularProgressBar
    Custom-Progress-Dialog-Android
    picasso jar
    swift
    Python编程
    H264分析工具
    Android Websites
    AnATools
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14307172.html
Copyright © 2011-2022 走看看