Skip to content

Commit 9bfbd31

Browse files
authored
Create sort-the-matrix-diagonally.cpp
1 parent 600aa72 commit 9bfbd31

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

C++/sort-the-matrix-diagonally.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Time: O(m * n * log(min(m, n))
2+
// Space: O(m * n)
3+
4+
class Solution {
5+
public:
6+
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
7+
unordered_map<int, vector<int>> lookup;
8+
for (int i = 0; i < mat.size(); ++i) {
9+
for (int j = 0; j < mat[0].size(); ++j) {
10+
lookup[i - j].emplace_back(mat[i][j]);
11+
}
12+
}
13+
for (auto& [k, v] : lookup) {
14+
sort(v.begin(), v.end());
15+
}
16+
for (int i = mat.size() - 1; i >= 0; --i) {
17+
for (int j = mat[0].size() - 1; j >= 0; --j) {
18+
mat[i][j] = lookup[i - j].back();
19+
lookup[i - j].pop_back();
20+
}
21+
}
22+
return mat;
23+
}
24+
};

0 commit comments

Comments
 (0)