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;
    }
};