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

    题目:

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

    For example,
    Given n = 3,

    You should return the following matrix:

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

    思路:

    本质上和上一题是一样的,这里我们要用数字螺旋的去填充矩阵。同理,我们也是逐个环的填充,每个环顺时针逐条边填充 

    /**
     * @param {number} n
     * @return {number[][]}
     */
    var generateMatrix = function(n) {
        if(n==0){
            return [];
        }
        
        var matrix=[];
        for(var j=0;j<n;j++){
            matrix[j]=[];
        }
        var circle=Math.ceil(n/2);
        var a=n,val=1;
        for(var i=0;i<circle;i++,a-=2){
            for(var col=i;col<i+a;col++){
                matrix[i][col]=val++;
            }
            for(var row=i+1;row<i+a;row++){
                matrix[row][i+a-1]=val++;
            }
            for(var col=i+a-2;col>=i;col--){
                matrix[i+a-1][col]=val++;
            }
            for(var row=i+a-2;row>i;row--){
                matrix[row][i]=val++;
            }
        }
        
        return matrix;
    };
  • 相关阅读:
    新的开始——3.3
    第一个周末——3.2
    恋爱知识大增——周五3.1
    相安无事——周四2.28
    好几天没写了。。。——周三2.27
    开学第二天——2.26
    开学第一天——2.25
    华为
    微软 Microsoft
    谷歌 google
  • 原文地址:https://www.cnblogs.com/shytong/p/5104016.html
Copyright © 2011-2022 走看看