498.-对角线遍历
目录
498. 对角线遍历
498. 对角线遍历
题目链接:
代码如下:
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
int m = mat.size(), n = mat[0].size();
vector<int> res;
res.reserve(m * n); // 预分配空间
for (int k = 0;k < m + n - 1;k++) {
int min_j = max(k - m + 1, 0);
int max_j = min(k, n - 1);
if (k % 2 == 0) {
//偶数从左到右
for (int j = min_j;j <= max_j;j++) {
res.push_back(mat[k - j][j]);
}
}
else {
//奇数从右到左
for (int j = max_j;j >= min_j;j--) {
res.push_back(mat[k - j][j]);
}
}
}
return res;
}
};