leetcode:59. 螺旋矩阵 II(中等,数组)

题目:

leetcode:59. 螺旋矩阵 II(中等,数组)_第1张图片

分析:leetcode:54. 螺旋矩阵基础上修改即可。

代码:

class Solution {
     
public:
    int num=1;
    void f(vector<vector<int>>& vv,int min_x,int min_y,int max_x,int max_y)
    {
     
        if(min_x>max_x||min_y>max_y) return;
        if(min_x==max_x&&max_y==min_y)
        {
     
            vv[min_x][min_y]=num++;
            return;
        }
        if(min_x==max_x)
        {
     
            for(int i=min_y;i<=max_y;i++) vv[max_x][i]=num++;
            return;
        }
        if(min_y==max_y)
        {
     
            for(int i=min_x;i<=max_x;i++) vv[i][min_y]=num++;
            return;
        }
        //行
        for(int i=min_y;i<=max_y;i++)
        {
     
            vv[min_x][i]=num++;
        }
        //列
        for(int i=min_x+1;i<=max_x;i++)
        {
     
            vv[i][max_y]=num++;
        }
        //行
        for(int i=max_y-1;i>=min_y;i--)
        {
     
            vv[max_x][i]=num++;
        }
        //列
        for(int i=max_x-1;i>min_x;i--)
        {
     
            vv[i][min_y]=num++;
        }        
        f(vv,min_x+1,min_y+1,max_x-1,max_y-1);
    }
    vector<vector<int>> generateMatrix(int n) {
     
        vector<int> v(n,0);
        vector<vector<int> > vv(n,v);
        f(vv,0,0,n-1,n-1);
        return vv;
    }
};

你可能感兴趣的:(数组)