class Solution {
public:
/**
*
* @param n int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > generateMatrix(int n) {
// write code here
vector<vector<int>>dp(n, vector<int>(n,1));
int top = 0;
int bottom = n-1;
int left = 0;
int right = n-1;
long long nums = 1;
long long n_squre = n*n;
while(nums <= n_squre){
for(int i = left; i <= right && top <= bottom; ++i){
dp[top][i] = nums++;
}
top++;
for(int i = top; i <= bottom && left <= right; ++i){
dp[i][right] = nums++;
}
right--;
for(int i = right; i >= left && top <= bottom; --i){
dp[bottom][i] = nums++;
}
bottom--;
for(int i = bottom; i >= top && left <= right; --i){
dp[i][left] = nums++;
}
left++;
}
return dp;
}
};