leetcode[54]Spiral Matrix

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[

 [ 1, 2, 3 ],

 [ 4, 5, 6 ],

 [ 7, 8, 9 ]

]

You should return [1,2,3,6,9,8,7,4,5].

class Solution {

public:

void  solve(vector<vector<int>> &matrix, vector<int> &res, int left, int right, int up, int down)

{

    if (up>down||left>right)

        return;

    if (up==down)

    {

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

        {

           res.push_back(matrix[up][j]);

        }

        return;

    }

    if (left==right)

    {

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

        {

            res.push_back(matrix[i][left]);

        }

        return;

    }

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

        res.push_back(matrix[up][j]);

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

        res.push_back(matrix[i][right]);

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

        res.push_back(matrix[down][j]);

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

        res.push_back(matrix[i][left]);

    solve(matrix, res, left+1, right-1, up+1, down-1);

}

vector<int> spiralOrder(vector<vector<int> > &matrix) 

{

    vector<int> res;

    if(matrix.empty())return res;

    solve(matrix,res,0,matrix[0].size()-1,0,matrix.size()-1);

    return res;

}

};

 

你可能感兴趣的:(LeetCode)