[LeetCode] Spiral Matrix

来源:互联网 发布:淘宝黑号是永久的吗 编辑:程序博客网 时间:2024/05/17 04:22

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:    vector<int> spiralOrder(vector<vector<int> > &matrix) {        vector<int> result;        int m = matrix.size();        if(m == 0)  return result;        int n = matrix[0].size();        int col_beg = 0, col_end = n-1;        int row_beg = 0, row_end = m-1;        while(1)        {            for(int col = col_beg; col <= col_end; ++col)                result.push_back(matrix[row_beg][col]);            if(++row_beg > row_end)   break;                        for(int row = row_beg; row <= row_end; ++row)                result.push_back(matrix[row][col_end]);            if(--col_end < col_beg)   break;                        for(int col = col_end; col >= col_beg; --col)                result.push_back(matrix[row_end][col]);            if(--row_end < row_beg)   break;                        for(int row = row_end; row >= row_beg; --row)                result.push_back(matrix[row][col_beg]);            if(++col_beg > col_end)   break;        }        return result;    }};


0 0
原创粉丝点击