初学python记录:力扣1329. 将矩阵按对角线排序

题目:

矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]mat[3][1] 和 mat[4][2] 。

给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。

思考:

因为每一条对角线都彼此平行互不干扰,所以我们可以遍历每一条对角线上的元素,将其看成一个新数组,从小到大排序后填回原来矩阵中对应的位置。代码如下:

class Solution(object):
    def diagonalSort(self, mat):
        """
        :type mat: List[List[int]]
        :rtype: List[List[int]]
        """
        m = len(mat)
        n = len(mat[0])

        def diagonal(x, y, mat):
            # 遍历对角线上所有元素,看成一个新数组,从小到大排序
            diagonal_number = []
            i = x
            j = y
            while i < m and j < n:
                diagonal_number.append(mat[i][j])
                i += 1
                j += 1
            diagonal_number.sort()
            
            # 将排序后的元素填回矩阵
            index = 0
            i_ = x
            j_ = y
            while i_ < m and j_ < n:
                mat[i_][j_] = diagonal_number[index]
                index += 1
                i_ += 1
                j_ += 1
            return mat

        diagonals = []
        # 将第一行和第一列所有坐标都计入对角线起点列表diagonals中
        for p in range(n):
            diagonals.append((0, p))
        for q in range(1, m):
            diagonals.append((q, 0))

        # 遍历每一条对角线
        for diag in diagonals:
            diagonal(diag[0], diag[1], mat)

        return mat

提交通过:

 

相关推荐

  1. leetcode1329--矩阵对角线排序

    2024-04-29 21:12:01       11 阅读
  2. 1329. 矩阵对角线排序

    2024-04-29 21:12:01       14 阅读
  3. 排序 + 模拟,LeetCode 1329. 矩阵对角线排序

    2024-04-29 21:12:01       13 阅读
  4. 2024.4.29每日一题——矩阵对角线排序

    2024-04-29 21:12:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 21:12:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 21:12:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 21:12:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 21:12:01       18 阅读

热门阅读

  1. [C++] 小游戏 斗破苍穹2.11.1 版本 zty出品

    2024-04-29 21:12:01       12 阅读
  2. 【抽代复习笔记】15-群(九):凯莱定理

    2024-04-29 21:12:01       12 阅读
  3. CSS--选择器

    2024-04-29 21:12:01       9 阅读
  4. C++基础经典算法题(必刷)

    2024-04-29 21:12:01       12 阅读
  5. C# 获取一个字符串中数字部分?

    2024-04-29 21:12:01       11 阅读
  6. python中json.dumps将中文变成unicode字符的解决办法

    2024-04-29 21:12:01       13 阅读
  7. Spring Boot应用部署 - War包部署

    2024-04-29 21:12:01       11 阅读
  8. 第30篇 RPC概述

    2024-04-29 21:12:01       12 阅读
  9. 题解:CF1946D(Birthday Gift)

    2024-04-29 21:12:01       10 阅读