LeetCode 1329. 将矩阵按对角线排序

简介: 矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。

网络异常,图片无法展示
|


题目


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


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


网络异常,图片无法展示
|


示例 1:
输入:mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]
输出:[[1,1,1,1],[1,2,2,2],[1,2,3,3]]
示例 2:
输入:mat = [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]
输出:[[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]


提示:


m == mat.length n == mat[i].length 1 <= m, n <= 100 1 <= mat[i][j] <= 100


解题思路


class Solution:
    def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
        row , col = len(mat), len(mat[0])
        # 配置遍历的初始点数组,然后进行遍历
        startPoints = [(0,x) for x in range(col)]+[ (y,0) for y in range(row)]
        startPoints.pop(0)#把重复的(0,0)去掉
        # print(startPoints)
        for x, y in startPoints:
            step = min(abs(row-1-x),abs(col-1-y))#先获取行走步数
            # 获取斜线数组
            lineList = [(x+i, y+i) for i in range(step+1)]
            # 获取斜线上全部数组的内容,然后排序,重新赋值
            pointList = [mat[i][j] for i,j in lineList]
            # print(pointList)
            pointList.sort()
            for i, j in lineList:
                mat[i][j] = pointList.pop(0)
        # print(mat)
        return mat
if __name__ == '__main__':
    mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]
    ret = Solution().diagonalSort(mat)
    print(ret)
目录
相关文章
|
2月前
|
算法
力扣240 搜索二维矩阵II
力扣240 搜索二维矩阵II
|
4月前
|
机器学习/深度学习
leetcode:面试题 17.04. 消失的数字(找单身狗/排序/公式)
leetcode:面试题 17.04. 消失的数字(找单身狗/排序/公式)
21 0
|
4月前
|
算法 测试技术 C#
【二分查找】LeetCode1970:你能穿过矩阵的最后一天
【二分查找】LeetCode1970:你能穿过矩阵的最后一天
|
4月前
leetcode-329:矩阵中的最长递增路径
leetcode-329:矩阵中的最长递增路径
23 0
|
2月前
|
存储 JavaScript
leetcode82. 删除排序链表中的重复元素 II
leetcode82. 删除排序链表中的重复元素 II
22 0
|
2月前
leetcode83. 删除排序链表中的重复元素
leetcode83. 删除排序链表中的重复元素
10 0
|
2月前
|
机器学习/深度学习 人工智能 算法
LeetCode刷题--- 面试题 01.07. 旋转矩阵(原地旋转+翻转替旋转)
LeetCode刷题--- 面试题 01.07. 旋转矩阵(原地旋转+翻转替旋转)
|
2月前
|
索引
力扣1859 将句子排序
力扣1859 将句子排序
|
4月前
|
算法
【Leetcode 74】搜索二维矩阵 —— 二分查找|矩阵
给你一个满足下述两条属性的`m x n`整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数
|
4月前
leetcode:217. 存在重复元素(先排序再比较邻位)
leetcode:217. 存在重复元素(先排序再比较邻位)
16 0

热门文章

最新文章