题目描述
把数读出来,排序,再重构一个矩阵。(放回去)
$O(MNlogD)$ D = min(M,N) 对角线长度。
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
n = len(mat)
m = len(mat[0])
f = collections.defaultdict(list)
for i in range(n):
for j in range(m):
f[i - j].append(mat[i][j]) #对角线
for k in f:
f[k].sort(reverse = 1)
for i in range(n):
for j in range(m):
mat[i][j] = f[i - j].pop()
return mat