leetcode[59]Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:

[

 [ 1, 2, 3 ],

 [ 8, 9, 4 ],

 [ 7, 6, 5 ]

]
class Solution {

public:

void generate1(int icount, vector<vector<int>> &res, int left, int right, int up, int down)

{

/*

    if (icount==res.size()*res[0].size())

        return;

*/

    if (left>right||up>down)

        return;

    if (up==down)

    {

        for (int j=left;j<=right;j++)

        {

            icount++;

            res[up][j]=icount;

        }

        return;

    }

    if (left==right)

    {

        for (int i=up;i<=down;i++)

        {

            icount++;

            res[i][left]=icount;

        }

        return;

    }

    for (int j=left;j<right;j++)

    {

        icount++;

        res[up][j]=icount;

    }

    for (int i=up;i<down;i++)

    {

        icount++;

        res[i][right]=icount;

    }

    for (int j=right;j>left;j--)

    {

        icount++;

        res[down][j]=icount;

    }

    for(int i=down;i>up;i--)

    {

        icount++;

        res[i][left]=icount;

    }

    generate1(icount, res, left+1, right-1, up+1, down-1);

}

vector<vector<int> > generateMatrix(int n) 

{    

    vector<vector<int>> res;

    if(n==0)return res;

    vector<int> temp;

    temp.insert(temp.end(),n,INT_MIN);

    res.insert(res.end(),n,temp);

    generate1(0,res,0,n-1,0,n-1);

    return res;

}

};

 

你可能感兴趣的:(LeetCode)