aboutsummaryrefslogtreecommitdiff
path: root/other/sort_matrix_diagonal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/sort_matrix_diagonal.cpp')
-rw-r--r--other/sort_matrix_diagonal.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/other/sort_matrix_diagonal.cpp b/other/sort_matrix_diagonal.cpp
new file mode 100644
index 0000000..61f3486
--- /dev/null
+++ b/other/sort_matrix_diagonal.cpp
@@ -0,0 +1,21 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ unordered_map<int, vector<int>> umv;
+ vector<vector<int>> diagonalSort(vector<vector<int>> &mat) {
+ int m = mat.size(), n = mat[0].size();
+ for (int i = 0; i < m; i++)
+ for (int j = 0; j < n; j++)
+ umv[i - j].push_back(mat[i][j]);
+ for (int i = -(n - 1); i < m; i++)
+ sort(umv[i].begin(), umv[i].end());
+ for (int i = m - 1; i >= 0; i--) {
+ for (int j = n - 1; j >= 0; j--) {
+ mat[i][j] = umv[i - j].back();
+ umv[i - j].pop_back();
+ }
+ }
+ return mat;
+ }
+};