首页 > 编程语言 > 详细

【数组】Spiral Matrix II

时间:2016-01-05 23:57:27      阅读:338      评论:0      收藏:0      [点我收藏+]

题目:

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;
};

 

【数组】Spiral Matrix II

原文:http://www.cnblogs.com/shytong/p/5104016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!