LeetCode498 对角线遍历[模拟] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode498 对角线遍历[模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
矩阵的大小为m*n,对角线个数为m+n-1,所以只要遍历m+n-1次即可,对于每一次遍历,要判断从下往上还是从上往下,在每个判断中,还有一个判断是在中心对角线上面还是下面,模拟好每种情况即可,代码如下:

class Solution 
public:
    vector<int> findDiagonalOrder(vector<vector<int>>& mat) 
        int m = mat.size(), n = mat[0].size();
        vector<int> res;
        int index = 0;
        for(int i = 0; i < m + n - 1; i ++) 
            if(i % 2) 
                int x = i < n ? 0 : i - n + 1;
                int y = i < n ? i : n - 1;
                while(x < m && y >= 0) 
                    res.emplace_back(mat[x][y]);
                    x ++;
                    y --;
                
             else 
                int x = i < m ? i : m - 1;
                int y = i < m ? 0 : i - m + 1;
                while(x >= 0 && y < n) 
                    res.emplace_back(mat[x][y]);
                    x --;
                    y ++;
                
            
        
        return res;
    
;

以上是关于LeetCode498 对角线遍历[模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

498. 对角线遍历(LeetCode 华为专题)

LeetCode 498. 对角线遍历c++/java详细题解

498#对角线遍历

Leetcode 498. Diagonal Traverse

LeetCode - 操作次数不重复数字对角线遍历约瑟夫环

LeetCode4.Array and String — Diagonal Traverse 对角线遍历