59. 螺旋矩阵 II

 1 class Solution 
 2 {
 3     vector<vector<int>> ans;
 4     int a;
 5 public:
 6     vector<vector<int>> generateMatrix(int n) 
 7     {
 8         a = 1;
 9         ans = vector<vector<int>> (n,vector<int>(n,0));
10         int x1 = 0,y1 = 0,x2 = n - 1,y2 = n - 1;
11         while(x1 <= x2 && y1 <= y2) Matrix(x1++,y1++,x2--,y2--);
12         return ans;
13     }
14     void Matrix(int x1,int y1,int x2,int y2)
15     {
16         if(x1 == x2 && y1 == y2) ans[x1][y1] = a;
17         else
18         {
19             for(int j = y1;j < y2;j ++) ans[x1][j] = a++;
20             for(int i = x1;i < x2;i ++) ans[i][y2] = a++;
21             for(int j = y2;j > y1;j --) ans[x2][j] = a++;
22             for(int i = x2;i > x1;i --) ans[i][y1] = a++;
23         }
24     }
25 };

 

posted @ 2020-03-20 11:08  Jinxiaobo0509  阅读(105)  评论(0)    收藏  举报