题目描述:
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
和Spiral Matrix类似,在遍历的同时对矩阵元素赋值。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<int> row(n,0);
vector<vector<int>> matrix(n,row);
int up_border=0;
int down_border=n-1;
int left_border=0;
int right_border=n-1;
int num=1;
while(up_border<=down_border&&left_border<=right_border)
{
for(int i=left_border;i<=right_border;i++)
{
matrix[up_border][i]=num;
num++;
}
up_border++;
for(int i=up_border;i<=down_border;i++)
{
matrix[i][right_border]=num;
num++;
}
right_border--;
if(up_border<=down_border)
{
for(int i=right_border;i>=left_border;i--)
{
matrix[down_border][i]=num;
num++;
}
down_border--;
}
if(left_border<=right_border)
{
for(int i=down_border;i>=up_border;i--)
{
matrix[i][left_border]=num;
num++;
}
left_border++;
}
}
return matrix;
}
};