leetcode 59. Spiral Matrix II

港控/mmm° 2022-08-21 04:19 248阅读 0赞

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:

  1. [
  2. [ 1, 2, 3 ],
  3. [ 8, 9, 4 ],
  4. [ 7, 6, 5 ]
  5. ]
  6. class Solution {
  7. public:
  8. vector<vector<int>> generateMatrix(int n) {
  9. vector<vector<int>>matrix(n);
  10. if(n==0)
  11. return matrix;
  12. for (int i = 0; i < n; i++)
  13. matrix[i].resize(n);
  14. if (n == 1)
  15. {
  16. matrix[0][0] = 1;
  17. return matrix;
  18. }
  19. int k = 1;
  20. int off = 0;
  21. while (true)
  22. {
  23. for (int i = off; i < matrix[0].size() - off; i++)
  24. {
  25. matrix[off][i] =k++;
  26. }
  27. if (k == n*n + 1)
  28. return matrix;
  29. for (int i = off + 1; i < matrix.size() - off; i++)
  30. {
  31. matrix[i][matrix.size() - 1 - off] = k++;
  32. }
  33. for (int i = matrix.size() - 2 - off; i >= off; i--)
  34. {
  35. matrix[matrix.size() - 1 - off][i] = k++;
  36. }
  37. for (int i = matrix.size() - 2 - off; i >= off + 1; i--)
  38. {
  39. matrix[i][off] = k++;
  40. }
  41. if (k == n*n + 1)
  42. return matrix;
  43. off++;
  44. }
  45. }
  46. };

accepted

发表评论

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

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

相关阅读