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

你可能感兴趣的:(59. Spiral Matrix II)