给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
和之前的螺旋矩阵有点像:
class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> matrix; matrix.resize(n); for(int i = 0; i < n; i++){ matrix[i].resize(n); } int index = 1; int i1 = 0; int i2 = n-1; int j1 = 0; int j2 = n-1; while(true) { for(int j = j1; j <=j2; j++){ matrix[i1][j] = index++; } if(index > n*n) break; i1++; for(int i = i1; i <= i2; i++){ matrix[i][j2] = index++; } if(index > n*n) break; j2--; for(int j = j2; j >= j1; j--){ matrix[i2][j] = index++; } if(index > n*n) break; i2--; for(int i = i2; i >= i1; i--){ matrix[i][j1] = index++; } if(index > n*n) break; j1++; } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cout << matrix[i][j] << ","; } cout << endl; } return matrix; } };