题目
Number: 59
Difficulty: Medium
Tags: Array
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
题解
输入n
,输出N*N
的螺旋矩阵。
代码
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n, vector<int>(n));
int i = 0, j = 0, m = 0;
int level;
while(m < n * n){
while(j < n - level){
matrix[i][j++] = ++m;
}
j--;
i++;
while(i < n - level){
matrix[i++][j] = ++m;
}
i--;
j--;
while(j >= level){
matrix[i][j--] = ++m;
}
j++;
i--;
while(i > level){
matrix[i--][j] = ++m;
}
i++;
j++;
level++;
}
return matrix;
}