zoukankan      html  css  js  c++  java
  • 【数组】Spiral Matrix

    题目:

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

    For example,
    Given the following matrix:

    [
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ]
    

    You should return [1,2,3,6,9,8,7,4,5].

    思路:

    逐个环的打印, 对于m *n的矩阵,环的个数是 Math.ceil((Math.min(m,n))/2)。对于每个环顺时针打印四条边。

    注意的是:最后一个环可能只包含一行或者一列数据

    /**
     * @param {number[][]} matrix
     * @return {number[]}
     */
    var spiralOrder = function(matrix) {
        if(matrix.length==0||matrix==null){
            return [];
        }
        var m=matrix.length,n=matrix[0].length;
        var circle=Math.ceil((Math.min(m,n))/2);
        
        var a=m,b=n,res=[];
        for(var i=0;i<circle;i++,a-=2,b-=2){
            for(var col=i;col<i+b;col++){
                res.push(matrix[i][col]);
            }
            for(var row=i+1;row<i+a;row++){
                res.push(matrix[row][i+b-1]);
            }
            if(a==1||b==1)break;
            for(var col=i+b-2;col>=i;col--){
                res.push(matrix[i+a-1][col]);
            }
            for(var row=i+a-2;row>i;row--){
                res.push(matrix[row][i]);
            }
            
        }
        
        return res;
        
    };
  • 相关阅读:
    spring(1)
    mybatis(7)自定义结果集(一对多/多对一)
    延迟加载
    《构建之法》阅读笔记03
    http socket
    转换
    .net后台通过xmlhttp 和远程服务通讯
    XMLHttpRequest介绍
    js 贪吃蛇
    触发器
  • 原文地址:https://www.cnblogs.com/shytong/p/5103981.html
Copyright © 2011-2022 走看看