185矩阵的之字形遍历

来源:互联网 发布:矩阵潜袭 规则 编辑:程序博客网 时间:2024/06/01 10:13

给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。

样例

对于如下矩阵:

[  [1, 2,  3,  4],  [5, 6,  7,  8],  [9,10, 11, 12]]

返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]

只有在边界上才有可能向下或向右,而且其下标有规律。其它情况是右上或左下,同样行列坐标和也有规律。

class Solution {public:    /**     * @param matrix: a matrix of integers     * @return: a vector of integers     */    vector<int> printZMatrix(vector<vector<int> > &matrix) {        // write your code here        int m = matrix.size();        int n = matrix[0].size();        vector<int> ret;        ret.reserve(m*n);                if(m==1)            return matrix[0];        /*else if(n==1)        {            for(int i=0; i<m;i++)                ret.push_back(matrix[i][0]);                            return ret;        }*/                       int i=0, j=0;            while(i>=0 && i<m && j>=0 && j<n)            {                ret.push_back(matrix[i][j]);                if( (j!=n-1) && ((i==0 && !(j&1)) || (i==m-1 && (i+j)&1 )) )//right                    j++;                else if( (j==0 && (i&1)) || (j==n-1 && !((i+j)&1)) )//down                    i++;                                    else if(!((i+j)&1))//右上                {                    j++;                    i--;                }                else if((i+j)&1)//左下                {                    i++;                    j--;                }            }                    return ret;    }};


0 0