LeetCode 59.Spiral Matrix II (螺旋矩阵II)

喜欢ヅ旅行 2022-05-10 04:03 344阅读 0赞

题目描述:

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

  1. 输入: 3
  2. 输出:
  3. [
  4. [ 1, 2, 3 ],
  5. [ 8, 9, 4 ],
  6. [ 7, 6, 5 ]
  7. ]

AC C++ Solution:

按顺时针顺序填充

  1. class Solution {
  2. public:
  3. vector<vector<int>> generateMatrix(int n) {
  4. vector<vector<int>> ret( n, vector<int>(n) );
  5. int k = 1, i = 0; //k为装填的数字
  6. while(k <= n * n) {
  7. int j = i;
  8. //for steps
  9. while( j < n - i)
  10. ret[i][j++] = k++; //1. horizonal, left to right
  11. j = i + 1;
  12. while( j < n - i)
  13. ret[j++][n-i-1] = k++; //2. vertical, top to bottom
  14. j = n - i - 2;
  15. while( j > i)
  16. ret[n-i-1][j--] = k++; //3. horizonal, right to left
  17. j = n - i - 1;
  18. while(j > i)
  19. ret[j--][i] = k++; //4. vectical, bottom to top
  20. i++; //next loop
  21. }
  22. return ret;
  23. }
  24. };

发表评论

表情:
评论列表 (有 0 条评论,344人围观)

还没有评论,来说两句吧...

相关阅读