A matrix diagonal is a diagonal line of cells starting from some cell in either the topmost row or leftmost column and going in the bottom-right direction until reaching the matrix’s end. For example, the matrix diagonal starting from mat[2][0], where mat is a 6 x 3 matrix, includes cells mat[2][0], mat[3][1], and mat[4][2].
Given an m x n matrix mat of integers, sort each matrix diagonal in ascending order and return the resulting matrix.
classSolution { voidhelper(vector<vector<int>>& A, int y, int x){ int n = A.size(), m = A[0].size(); vector<int> S; for(int i = 0; y + i < n and x + i < m; i++) { S.push_back(A[y+i][x+i]); } sort(begin(S), end(S)); for(int i = 0; y + i < n and x + i < m; i++) { A[y+i][x+i] = S[i]; } } public: vector<vector<int>> diagonalSort(vector<vector<int>>& mat) { int n = mat.size(), m = mat[0].size(); for(int i = 0; i < n; i++) { helper(mat, i, 0); } for(int i = 1; i < m; i++) { helper(mat, 0, i); } return mat; } };