LeetCode59- 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n 2 n^{2} n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
一、思路
(一)分而治之
和之前的一样,将这个矩阵进行分层:
LeetCode48-旋转图像
LeetCode54-螺旋矩阵
采用递归的方法来解决。
C++代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n));
int row_begin = 0, col_begin = 0;
int row_end = n - 1, col_end = n - 1;
int i, j;
int k = 1;
while (row_begin <= row_end && col_begin <= col_end) {
i = row_begin;
for (j = col_begin; j <= col_end; j++)
ans[i][j] = (k++);
j = col_end;
for (i = row_begin + 1; i <= row_end; i++)
ans[i][j] = (k++);
i = row_end;
for (j = col_end - 1; j >= col_begin; j--)
ans[i][j] = (k++);
j = col_begin;
for (i = row_end - 1; i > row_begin; i--)
ans[i][j] = (k++);
row_begin++;
row_end--;
col_begin++;
col_end--;
}
return ans;
}
};
执行效率: