首页 > 其他 > 详细

[Leetcode] Spiral Matrix II

时间:2019-06-18 17:28:37      阅读:123      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

以螺旋型填充二維陣列

 

思考方式是這樣,四個邊界,順序上、右、下、左,不斷往內縮,限制x,y達到螺旋型填充的目的

以4 * 4 來舉例,先填充1 2 3 4

技术分享图片

上邊界往下移動,從5開始 填充5 6 7,右邊界往左移動

技术分享图片

 從8開始,填充8 9 10 ,下邊界往上移動

技术分享图片

 從11開始,填充11 12,左邊界向右移動

技术分享图片

 繼續下一輪,直到上右下左循環中任一次邊界超出,即結束

 技术分享图片

==========================================================================

 1 public int[][] GenerateMatrix(int n)
 2         {
 3             int[][] result = new int[n][];
 4             for(int i = 0; i <n; i++)
 5             {
 6                 result[i] = new int[n];
 7             }
 8             int upLimit = 0, downLimit = n - 1, leftLimit = 0, rightLimit = n - 1;
 9             int val = 0;
10 
11             while (true)
12             {
13                 for (int i = leftLimit; i <= rightLimit; i++)
14                 {
15                     result[leftLimit][i] = ++val;
16                 }
17                 if (++upLimit > downLimit) break;
18 
19                 for (int i = upLimit; i <= downLimit; i++)
20                 {
21                     result[i][rightLimit] = ++val;
22                 }
23                 if (--rightLimit < leftLimit) break;
24 
25                 for (int i = rightLimit; i >= leftLimit; i--)
26                 {
27                     result[downLimit][i] = ++val;
28                 }
29                 if (--downLimit < upLimit) break;
30 
31                 for(int i = downLimit; i >= upLimit; i--)
32                 {
33                     result[i][leftLimit] = ++val;
34                 }
35                 if (++leftLimit > rightLimit) break;
36             }
37 
38             return result;
39         }

 

技术分享图片

 

[Leetcode] Spiral Matrix II

原文:https://www.cnblogs.com/seako/p/11046314.html

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