文章目录
题意
思路
数组左边有值,才可能右边有值;
然后遍历
代码
C++
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& nums) {
vector<int> ans;
vector< pair<int, int> > now;
int i = 0;
while (i < nums.size() || !now.empty()) {
vector<pair<int, int> > tmp;
if (i < nums.size())
{
ans.push_back(nums[i][0]);
tmp.push_back(make_pair(i, 0));
}
i++;
for (auto &index:now)
{
int x = index.first;
int y = index.second + 1;
if (x < nums.size() && y < nums[x].size())
{
tmp.push_back(make_pair(x, y));
ans.push_back(nums[x][y]);
}
}
now = tmp;
}
return ans;
}
};