0%

1424. Diagonal Traverse II

O(C) time O(log(max(m, n))) space
当一个binary tree来level order traverse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& nums) {
queue<pair<int, int>> q{{{0, 0}}};
vector<int> res;
while (!q.empty()) {
auto [r, c] = q.front(); q.pop();
res.push_back(nums[r][c]);
if (r + 1 < nums.size() && c == 0) { // 因为每一行都非空,所以只有第一个需要添加左子,剩下的统一添加右子即可去重
q.emplace(r + 1, c);
}
if (c + 1 < nums[r].size()) {
q.emplace(r, c + 1);
}
}
return res;
}
};