行号和列号之和相同的处于同一对角线,然后排序。
struct Node{
int x;
int y;
int val;
};
bool operator<(const Node &a,const Node &b){
if(a.x+a.y!=b.x+b.y)
return a.x+a.y<b.x+b.y;
return a.x>b.x;
}
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& nums) {
vector<Node> arr;
Node node;
for(int i=0;i<nums.size();i++){
for(int j=0;j<nums[i].size();j++){
node.x=i;
node.y=j;
node.val=nums[i][j];
arr.push_back(node);
}
}
sort(arr.begin(),arr.end());
vector<int> ans;
for(int i=0;i<arr.size();i++)
ans.push_back(arr[i].val);
return ans;
}
};