Medium!

题目描述:

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

示例:

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

解题思路:

此题跟之前那道 Spiral Matrix 螺旋矩阵 的讲解来转换下标。

C++解法一:

 1 class Solution {
 2 public:
 3     vector<vector<int> > generateMatrix(int n) {
 4         vector<vector<int> > res(n, vector<int>(n, 1));
 5         int val = 1, p = n;
 6         for (int i = 0; i < n / 2; ++i, p -= 2) {
 7             for (int col = i; col < i + p; ++col)
 8                 res[i][col] = val++;
 9             for (int row = i + 1; row < i + p; ++row)
10                 res[row][i + p - 1] = val++;
11             for (int col = i + p - 2; col >= i; --col)
12                 res[i + p - 1][col] = val++;
13             for (int row = i + p - 2; row > i; --row)    
14                 res[row][i] = val++;
15         }
16         if (n % 2 != 0) res[n / 2][n / 2] = val;
17         return res;
18     }
19 };

 

相关文章: