leetcode-59

975 阅读1分钟
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组
        int startx = 0;
        int starty = 0;
        int offset = 1;
        int i = 0;
        int j = 0;
        int count = 1;
        //循环次数
        int loop = n/2;
        while(loop--){
            //这里每一次循环都要调整i和j的位置
            for(j=starty;j<n-offset;j++)
                res[startx][j] = count++;
            for(i=startx;i<n-offset;i++)
                res[i][j] = count++;
            for(;j>starty;j--)
                res[i][j] = count++;
            for(;i>startx;i--)
                res[i][j] = count++;
            //第二圈开始时,没一圈自加一
            startx++;
            starty++;
            //第二圈开始时,每一圈终止位置相对移动1
            offset++;
        }
        if(n%2)
            res[n/2][n/2]=count;
        
        return res;
    }
};