关闭

leetcode_c++:Spiral Matrix(054)

57人阅读 评论(0) 收藏 举报
分类:

题目

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].


算法

复杂度:O(nm)


class Solution{
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix){
        vector<int> result;
        if(matrix.empty()) 
            return result;
        int beginX=0,endX=matrix[0].size()-1;
        int beginY=0,endY=matrix.size()-1;

        while(true){
            //from left to right
            for(int i=beginX;i<=endX;++i)
                result.push_back(matrix[beginY][i]);
            if(++beginY>endY)  break;

            //from top to down
            for(int i=beginY;i<=endY;++i)
                result.push_back(matrix[i][endX]);
            if(beginX>--endX)  break;

            //form right to left
            for(int i=endX;i>=beginX;--i)
                result.push_back(matrix[endY][i]);
            if(beginY>--endY)  break;

            //form bottom to up
            for(int i=endY;i>=beginY;--i)
                result.push_back(matrix[i][beginX]);
            if(++beginX>endX) break;

        }

        return result;

    }
};
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:103896次
    • 积分:6702
    • 等级:
    • 排名:第3496名
    • 原创:589篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    最新评论