题目描述
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
解答
class Solution {
public:vector<vector<int>> generateMatrix(int n) {// 生成顺序:每一轮右下左上vector<vector<int>> res(n, vector<int>(n, 0));int left = 0, right = n - 1, up = 0, down = n - 1; // 四方向边界int i = 0, j = 0; // 起始位置for(int i = 1; i <= n*n;){// 右for(int j = left; j <= right; ++j){res[up][j] = i++;}up = up + 1; // 上边界下移一个单位// 下for(int j = up; j <= down; ++j){res[j][right] = i++;}right = right - 1; // 右边界左移一个单位// 左for(int j = right; j >= left; --j){res[down][j] = i++;}down = down - 1;// 下for(int j = down; j >= up; --j){res[j][left] = i++;}left = left + 1;}return res;}
};