[LeetCode] Sort the Matrix Diagonally

1329. Sort the Matrix Diagonally

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
void helper(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;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/06/15/PS/LeetCode/sort-the-matrix-diagonally/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.