59. Spiral Matrix II

leetcode 59. 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 ]
]

思路:

跟之前的Spiral Matrix没啥区别,就是一个逆运算这道题是要按螺旋的顺序来填数,由于给定矩形是个正方形,我们计算环数时用n / 2来计算,若n为奇数时,此时最中间的那个点没有被算在环数里,所以最后需要单独赋值,还是下标转换问题是难点。

var generateMatrix = function(n) {
    var res=[];
    var c=Math.floor(n/2);
    var p=n;
    var val=1;
    for(var i=0;i<n;i++){
       res.push([]);
    }
    for(var i=0;i<c;i++,p-=2){
        for(var col=i;i<i+p;++col){
            res[i][col]=val++;
        }
        for(var row=i+1;row<i+p;row++){
            res[row][i+p-1]=val++;
        }
        for(var col=i+p-2;col>=i;col--){
            res[i+p-1][col]=val++;
        }
        for(var row=i+p-2;row>i;--row){
            res[row][i]=val++;
        }
       
    }
     if( n%2!=0 ) res[c][c]=val;
     return res;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容