xxxxxxxxxx
class Solution:
def diagonalSort(self, M: List[List[int]]) -> List[List[int]]:
y, x = len(M), len(M[0])
for i in range(2-y, x-1):
valid = range(max(0, 0-i), min(y, x-i))
diag, k = sorted([M[j][i+j] for j in valid]), 0
for j in valid:
M[j][i+j], k = diag[k], k + 1
return M