59. Spiral Matrix II

仅供自己学习

 

思路:

同样设置上下左右边界,因为是n*n的方阵,所以右边界和下边界为n-1。同时定义一个count=1用来给每个方阵赋值。

从左上角开始螺旋遍历,第一个for从左边界移动到右边界,然后上边界+1。第二个for从上边界移动到下边界,然后右边界-1,再从右边界移动到左边界,下边界-1,再从下边界移动到上边界,然后左边界+1.循环结束的条件是 count<=n*n。

 

代码:

 1 class Solution {
 2 public:
 3     vector<vector<int>> generateMatrix(int n) {
 4         int t=0;
 5         int d=n-1;
 6         int l=0;
 7         int r=n-1;
 8         vector<vector<int>> res(n,vector<int>(n));
 9         int count=1;
10         while(count<=n*n){
11             for(int i=l;i<=r;++i) res[t][i]=count++;
12             if(++t>d) break;
13             for(int i=t;i<=d;++i) res[i][r]=count++;
14             if(--r<l) break;
15             for(int i=r;i>=l;--i) res[d][i]=count++;
16             if(--d<t) break;
17             for(int i=d;i>=t;--i) res[i][l]=count++;
18             if(++l>r) break;
19         }
20         return res;
21     }
22 };

 

posted @ 2021-03-16 08:54  Mrsdwang  阅读(35)  评论(0编辑  收藏  举报