题目
思路
画个图找一下规律,简单模拟一下就出来了。
代码
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
vector<int> vec;
int i, j;
i = j = 0;
bool flag = true;
while(flag) {
while(flag) {
if(i >= mat.size() || j >= mat[0].size()) {flag = false; break;}
vec.push_back(mat[i][j]);
i -= 1; j += 1;
if(j >= mat[0].size()) {
j -= 1;
i += 2;
flag = false;
break;
} else if(i < 0) {
i += 1;
flag = false;
break;
}
}
while(!flag) {
if(i >= mat.size() || j >= mat[0].size()) {flag = false; break;}
vec.push_back(mat[i][j]);
j -= 1; i += 1;
if(i >= mat.size()) {
i -= 1;
j += 2;
flag = true;
break;
} else if(j < 0) {
j += 1;
flag = true;
break;
}
}
}
return vec;
}
};