Spiral Matrix

来源:互联网 发布:sot23 单片机 编辑:程序博客网 时间:2024/05/18 20:13

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) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        vector<int> ret;        int m = matrix.size();                if(m == 0) return ret;                int n = matrix[0].size();        int i_start = 0,j_start = 0;        int i_end = m-1,j_end = n - 1;                while(1)        {            for(int j = j_start;j<=j_end;j++)                ret.push_back(matrix[i_start][j]);                if(++i_start > i_end) break;                        for(int i = i_start;i<=i_end;i++)                ret.push_back(matrix[i][j_end]);            if(j_start > --j_end ) break;                        for(int j = j_end;j>=j_start;j--)                ret.push_back(matrix[i_end][j]);            if(i_start > --i_end ) break;                        for(int i = i_end;i>=i_start;i--)                ret.push_back(matrix[i][j_start]);            if(++j_start > j_end ) break;        }                return ret;    }};

4 milli secs





原创粉丝点击