题目描述:
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.
Example:
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
Output: [1,2,4,7,5,3,6,8,9]
Explanation:
Note:
- The total number of elements of the given matrix will not exceed 10,000.
求一个矩阵的对角线遍历序列,遍历方向有两种,分情况讨论。
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
vector<int> result;
if(matrix.size()==0||matrix[0].size()==0) return result;
int i=0;
int j=0;
int m=matrix.size();
int n=matrix[0].size();
bool up_right=true;
while(i<m&&j<n)
{
result.push_back(matrix[i][j]);
if(up_right)
{
if(i>0&&j<n-1)
{
i--;
j++;
}
else
{
up_right=false;
if(j==n-1) i++;
else if(i==0) j++;
}
}
else
{
if(i<m-1&&j>0)
{
i++;
j--;
}
else
{
up_right=true;
if(i==m-1) j++;
else if(j==0) i++;
}
}
}
return result;
}
};