LeetCode: 对角线遍历

对角线遍历

要求

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素。

思路

判断奇数和偶数行,进行M和N得大小加减。

示例

class Solution {
public:
    vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
        vector<int> out;
        if(matrix.empty()){
            return out;
        }
        int i=0,j=0,sum=matrix[0].size()*matrix.size();
        for(int count=0;count<sum;count++){
            out.push_back(matrix[i][j]);
            if((i+j)%2==0){//偶数行
                if(j==matrix[0].size()-1){
                    i++;
                }else if(i==0){
                    j++;                    
                }else{
                    i--;
                    j++;
                }
         
            }
            else{//奇数行
                if(i==matrix.size()-1){
                    j++;
                }else if(j==0){
                    i++;
                }else{
                    i++;
                    j--;
                }
            }
        }
        return out;
    }
};
posted @ 2020-04-17 17:59  Breezy-ye  阅读(145)  评论(0编辑  收藏  举报