讨论/《数组和字符串》 - 对角线遍历/
《数组和字符串》 - 对角线遍历
class Solution {
public:
    vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
        vector<int> res;
        int cnt = 0;
        bool dir = 1;
        int i = 0, j = 0;
        res.push_back(mat[i][j]);
        while(cnt<mat.size()*mat[0].size()-1)
        {
            if(dir)
            {
                i--;
                j++;
                if(i<0)
                {
                    i++;
                    dir = 0;
                }
                if(j==mat[0].size())
                {
                    j--;
                    if(dir==0)
                    {
                        i++;
                    }
                    else    
                    {
                        i+=2;
                        dir = 0;
                    }
                } 
            }
            else
            {
                i++;
                j--;
                if(j<0)
                {
                    j++;
                    dir = 1;
                }
                if(i==mat.size())
                {

                    i--;
                    if(dir==1)
                    {
                        j++;
                    }
                    else
                    {
                        j += 2;
                        dir = 1;
                    }
                }
            }
            res.push_back(mat[i][j]);
            cnt++;
        }
        return res;
    }
};
展开全部 23 讨论