[LeetCode][JavaScript]Spiral Matrix II

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 ]
]
https://leetcode.com/problems/spiral-matrix-ii/
 
 
 

 
 
每做完一条边,就缩小对应长或宽的范围。
 1 /**
 2  * @param {number} n
 3  * @return {number[][]}
 4  */
 5 var generateMatrix = function(n) {
 6     var res = [], i , j, count = 1;
 7     for(i = 0; i < n; i++){
 8         res[i] = [];
 9         for(j = 0; j < n; j++){
10             res[i].push(0);
11         } 
12     }
13     var heightStart = widthStart = 0, heightEnd = widthEnd = n - 1;
14     n = Math.ceil(n / 2);
15     while(n--){
16         for(i = widthStart; i <= widthEnd; i++){
17             res[heightStart][i] = count++;
18         }
19         heightStart++;
20         for(i = heightStart; i <= heightEnd; i++){
21             res[i][widthEnd]  = count++;
22         }
23         widthEnd--;
24         for(i = widthEnd; i >= widthStart; i--){
25             res[heightEnd][i] = count++;
26         }
27         heightEnd--;
28         for(i = heightEnd; i >= heightStart; i--){
29             res[i][widthStart]  = count++;
30         }
31         widthStart++;
32     }
33     return res;
34 };

 

 
 

 

posted @ 2015-09-27 16:06  `Liok  阅读(402)  评论(0编辑  收藏  举报