https://leetcode.com/problems/sort-the-matrix-diagonally/
1. Use STL sort():
//20 ms 9.5 MBclass Solution {public:vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {//top-right [0][n-1]//buttom-left [m-1][0]//m = 3, n = 4//[0][n-1]//[0][n-2] [1][n-1] i = 1//[0][n-3] [1][n-2] [2][n-1] i = 2//[0][0] [1][n-3] [2][n-2] i = 3//[1][0] [2][1] i = 4//[2][0] i = 5//i = total of difference//v = vertical difference//h = horizontal difference//v + h == iint m = mat.size();int n = mat[0].size();for(int i=0; i<m+n-1; i++){Find_And_Fill_Diagonals(i, mat, m, n);}return mat;}private:void Find_And_Fill_Diagonals(int diff, vector<vector<int>>& mat, int m, int n){vector<int> diagonal;int v_init;int h_init;if(diff<=n-1){v_init = 0;h_init = n-1-diff;} else{v_init = diff-n+1;h_init = 0;}int v_curr = v_init;int h_curr = h_init;while(v_curr<m && h_curr<n){diagonal.push_back(mat[v_curr][h_curr]);v_curr++;h_curr++;}sort(diagonal.begin(), diagonal.end());v_curr = v_init;h_curr = h_init;for(int i=0; i<diagonal.size(); i++){mat[v_curr][h_curr] = diagonal[i];v_curr++;h_curr++;}}};
Time Complexity: O(m*n)
Space Complexity: O(sqrt(m^2 + n^2))
