标签:count 59 边界 int res ++ Spiral 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 };
标签:count,59,边界,int,res,++,Spiral,II,-- 来源: https://www.cnblogs.com/Mrsdwang/p/14541363.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。