本题是第 182 场周赛的 Q3,LC竞赛分为1780。
方法一. 利用反对角线性质
在同一条反对角线上的元素的 i+j 值是相同的,同时,根据遍历的方式可知,i 值越大的元素在同一条反对角线之中越先被遍历,i+j 值越小的反对角线越早被遍历。考虑采用有序的 map 对 i+j 值进行存储,代码如下:
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& nums) {
map<int,vector<int>> res;
for(int i=0;i<nums.size();i++){
for(int j=0;j<nums[i].size();j++){
res[i+j].push_back(nums[i][j]);
}
}
vector<int> ans;
for(auto tmp1: res){
vector<int> tmp = tmp1.second;
reverse(tmp.begin(),tmp.end());
for(int i=0;i<tmp.size();i++){
ans.push_back(tmp[i]);
}
}
return ans;
}
};
标签:tmp,遍历,1424,res,力扣,vector,对角线,tmp1,刷题
From: https://blog.csdn.net/Bright_Brilliant/article/details/139515367