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 }

    执行结果                                   

  • 相关阅读:
    DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
    gearman学习笔记1
    Sphinx学习笔记2
    docker学习笔记(一)
    Centos7安装配置Xhgui
    MongodDB学习笔记(二)(复制)
    MongoDB学习笔记(一)
    0927 DP 小测 #1
    「NOI 2011」阿狸的打字机 「AC 自动机」「数据结构」
    「POI 2005」SZA-Template 「失配树」「双向链表」「思维」
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14307172.html
Copyright © 2011-2022 走看看