LeetCode Spiral Matrix

来源:互联网 发布:gbox软件 编辑:程序博客网 时间:2024/05/23 19:13

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

Tips:

Being careful is the only princeple.

Solution:

class Solution {public:    vector<int> spiralOrder(vector<vector<int> > &matrix) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(matrix.empty())            return vector<int>();        vector<int> result;        int border[]={1,matrix[0].size()-1,matrix.size()-1,0};        int dir[][2]={{0,1},{1,0},{0,-1},{-1,0}};        int x=0,y=0;        int index=0;        int count=0,total=matrix.size()*matrix[0].size();        while(count++<total){            result.push_back(matrix[x][y]);            if(dir[index][1]!=0&&y==border[2-dir[index][1]]){                border[2-dir[index][1]]-=dir[index][1];                ++index;                index%=4;            }else if(dir[index][0]!=0&&x==border[1+dir[index][0]]){                border[1+dir[index][0]]-=dir[index][0];                ++index;                index%=4;            }            x+=dir[index][0];            y+=dir[index][1];        }        return result;    }};

原创粉丝点击