遍历的时候还是按照行遍历,但是每次将对角线的元素存储到容器中,排序后重新输出。
class Solution {
public:
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
unordered_map<int, vector<int>> hashmap;
int n = mat.size(), m = mat[0].size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
hashmap[i - j].emplace_back(mat[i][j]);
}
}
for (auto &[_, v] : hashmap) {
sort(v.begin(), v.end(), greater<int>());
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
mat[i][j] = hashmap[i - j].back();
hashmap[i - j].pop_back();
}
}
return mat;
}
};