498. Diagonal Traverse

来源:互联网 发布:掌上百度java官网 编辑:程序博客网 时间:2024/06/05 15:55

简单题

class Solution {public:    vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {        vector<int> result;        if(matrix.size()==0||matrix[0].size()==0)            return result;        else        {            int row=matrix.size();            int col=matrix[0].size();            int i=0;            int j=0;            int direction=1;//1:up;0:down            result.push_back(matrix[0][0]);            //cout<<matrix[0][1]<<endl;            while(1)            {               if(direction==1)               {                    if(i-1>=0&&j+1<=col-1)                    {                        result.push_back(matrix[--i][++j]);                    }                    else if(j+1<=col-1)                    {                        result.push_back(matrix[i][++j]);                        direction=0;                    }                    else if(i+1<=row-1)                    {                        result.push_back(matrix[++i][j]);                        direction=0;                    }                    else                        return result;               }               else               {                    if(i+1<=row-1&&j-1>=0)                    {                        result.push_back(matrix[++i][--j]);                    }                    else if(i+1<=row-1)                    {                        result.push_back(matrix[++i][j]);                        direction=1;                    }                    else if(j+1<=col-1)                    {                        result.push_back(matrix[i][++j]);                        direction=1;                    }                    else                        return result;                }                //cout<<matrix[i][j]<<endl;            }        }    }};
0 0
原创粉丝点击