题目:
题解:
思路:找规律
代码如下:
class Solution {
public:
vector findDiagonalOrder(vector>& g) {
int n=g.size(),m=g[0].size(),all=n*m;
vector res;
int x=0,y=0;
while(all--)
{
res.push_back(g[x][y]);
// 这里的每个x y都没有越界,因此每个if只会执行一次
// 右上
if((x+y)%2==0){
if(y==m-1)++x;// 最后一列,向下
else if(x==0)++y;// 不在最后一列,但是在第一行,向右
else x--,y++;// 正常右上
}
// 左下
else{
if(x==n-1)++y;// 最后一行,向右
else if(y==0)++x;// 不在最后一行,但是在第一列,向下
else x++,y--;
}
}
return res;
}
};


![[模拟][数组]leetcode498:对角线遍历(medium) [模拟][数组]leetcode498:对角线遍历(medium)](http://www.mshxw.com/aiimages/31/971535.png)
