原题链接:对角线遍历。
题目:给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
有点没大看懂。后面有空再细看下。
C++实现如下:
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
int Rowlength=matrix.size();
if(Rowlength==0)
return {};
int Cowlength=matrix[0].size();
vector<int> answer;
//横坐标和纵坐标之和
int count=Rowlength+Cowlength-1;
int m=0;
int n=0;
for(int i=0;i<count;i++)
{
if(i%2==0)//右上方向
{
while(m>=0&&n<Cowlength)
{
answer.push_back(matrix[m][n]);
m--;
n++;
}
if(n<Cowlength)
m++;
else
{
m=m+2;
n--;
}
}
else{//左下方向
while(n>=0&&m<Rowlength)
{
answer.push_back(matrix[m][n]);
m++;
n--;
}
if(m<Rowlength)
n++;
else
{
m--;
n=n+2;
}
}
}
return answer;
}
};