給你一個包含 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;
}
};