【数组】59. 螺旋矩阵 II

题目:

 

 

解答:

 1 class Solution {
 2 public:
 3     vector<vector<int>> generateMatrix(int n) 
 4     {
 5          vector< vector<int> > matrix(n, vector<int>(n));
 6         if (n == 0)
 7         {
 8             return matrix;
 9         }
10         
11         ssize_t beginX = 0, endX = n - 1;
12         ssize_t beginY = 0, endY = n - 1;
13         int num = 1;
14         
15         while (true)
16         {
17             for (ssize_t i = beginX; i <= endX; ++i)
18                 matrix[beginY][i] = num++;
19             if (++beginY > endY)
20                 break;
21             for (ssize_t i = beginY; i <= endY; ++i)
22                 matrix[i][endX] = num++;
23             if (beginX > --endX)
24                 break;
25             for (ssize_t i = endX; i >= beginX; --i)
26                 matrix[endY][i] = num++;
27             if (beginY > --endY)
28                 break;
29             for (ssize_t i = endY; i >= beginY; --i)
30                 matrix[i][beginX] = num++;
31             if (++beginX > endX)
32                 break;
33         }
34         return matrix;
35         
36     }
37 };

 

posted @ 2020-05-05 15:24  梦醒潇湘  阅读(160)  评论(0)    收藏  举报