3748. Sort Matrix By Diagonals¶
Difficulty: Medium
LeetCode Problem View on GitHub
3748. Sort Matrix by Diagonals
Medium
You are given an n x n square matrix of integers grid. Return the matrix such that:
- The diagonals in the bottom-left triangle (including the middle diagonal) are sorted in non-increasing order.
- The diagonals in the top-right triangle are sorted in non-decreasing order.
Example 1:
Input: grid = [[1,7,3],[9,8,2],[4,5,6]]
Output: [[8,2,3],[9,6,7],[4,5,1]]
Explanation:

The diagonals with a black arrow (bottom-left triangle) should be sorted in non-increasing order:
[1, 8, 6]becomes[8, 6, 1].[9, 5]and[4]remain unchanged.
The diagonals with a blue arrow (top-right triangle) should be sorted in non-decreasing order:
[7, 2]becomes[2, 7].[3]remains unchanged.
Example 2:
Input: grid = [[0,1],[1,2]]
Output: [[2,1],[1,0]]
Explanation:

The diagonals with a black arrow must be non-increasing, so [0, 2] is changed to [2, 0]. The other diagonals are already in the correct order.
Example 3:
Input: grid = [[1]]
Output: [[1]]
Explanation:
Diagonals with exactly one element are already in order, so no changes are needed.
Constraints:
grid.length == grid[i].length == n1 <= n <= 10-105 <= grid[i][j] <= 105
Solution¶
class Solution {
public int[][] sortMatrix(int[][] grid) {
int n = grid.length, m = grid[0].length;
int cr = n - 1, cc = 0;
while (cr >= 0) {
int i = cr, j = 0;
ArrayList<Integer> temp = new ArrayList<>();
while (i < n && j < m) temp.add(grid[i++][j++]);
Collections.sort(temp); Collections.reverse(temp);
i = cr; j = 0;
int idx = 0;
while (i < n && j < m) grid[i++][j++] = temp.get(idx++);
cr--;
}
cr = 0; cc = m - 1;
while (cc >= 1) {
int i = cr, j = cc;
ArrayList<Integer> temp = new ArrayList<>();
while (i < n && j < m) temp.add(grid[i++][j++]);
Collections.sort(temp);
i = 0; j = cc;
int idx = 0;
while (i < n && j < m) grid[i++][j++] = temp.get(idx++);
cc--;
}
return grid;
}
}
Complexity Analysis¶
- Time Complexity:
O(?) - Space Complexity:
O(?)
Approach¶
Detailed explanation of the approach will be added here