1329.将矩阵按对角线排序
链接:1329.将矩阵按对角线排序
难度:Medium
标签:数组、矩阵、排序
简介:给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。
题解 1 - python
- 编辑时间:2024-04-29
- 执行用时:50ms
- 内存消耗:16.85MB
- 编程语言:python
- 解法介绍:遍历。
class Solution:
    def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
        n, m = len(mat), len(mat[0])
        def next(x: int, y: int) -> Tuple[int, int]:
            return (x + 1, y + 1) if x + 1 < n and y + 1 < m else (-1, -1)
        def sort(x: int, y : int):
            arr = []
            i, j = x, y
            while i != -1:
                arr.append(mat[i][j])
                i, j = next(i, j)
            arr.sort()
            i, j = x, y
            while i != -1:
                mat[i][j] = arr[i - x]
                i, j = next(i, j)
        for j in range(m): sort(0, j)
        for i in range(1, n): sort(i, 0)
        return mat