题目

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

示例 1:
螺旋矩阵2.jpg

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

示例 2:

  1. 输入:n = 1
  2. 输出:[[1]]

提示:

  • 1 <= n <= 20

    解题方法

    模拟行为

    按照数组循环填入顺序,更改每次循环边界。
    注意特殊情况。

c++代码:

  1. class Solution {
  2. public:
  3. vector<vector<int>> generateMatrix(int n) {
  4. vector<vector<int>> output(n, vector<int>(n, 0));
  5. int end = n*n;
  6. int num = 1;
  7. int a = 0, b = n-1;
  8. while (num<=end) {
  9. int i=a, j=a;
  10. if(a==b) {
  11. output[a][b] = num;
  12. num++;
  13. }
  14. while (j<b) {
  15. output[i][j] = num;
  16. num++;
  17. j++;
  18. }
  19. while (i<b) {
  20. output[i][j] = num;
  21. num++;
  22. i++;
  23. }
  24. while (j>a) {
  25. output[i][j] = num;
  26. num++;
  27. j--;
  28. }
  29. while (i>a) {
  30. output[i][j] = num;
  31. num++;
  32. i--;
  33. }
  34. a++;
  35. b--;
  36. }
  37. return output;
  38. }
  39. };