首先遍历对角线元素,顺序为:

  1. 先从第一列的最后一行到第一行
  2. 然后从第一行的第一列到最后一列

遍历的同时记录坐标和数值,对数值进行排序,然后坐标顺序放回。

class Solution:
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
# 从第一列的最后一行到第一行
for j in range(len(mat[0])-1, -1, -1):
cords = [] # 记录坐标顺序
nums = [] # 记录数值
i = 0
while(i < len(mat) and j < len(mat[0])):
cords.append([i, j])
nums.append(mat[i][j])
i += 1
j += 1
nums.sort() # 数值排序
for k in range(len(nums)):
cord_i, cord_j = cords[k]
mat[cord_i][cord_j] = nums[k] # 按坐标顺序放回
# 从第一行的第一列到最后一列
for i in range(1, len(mat)):
cords = []
nums = []
j = 0
while(i < len(mat) and j < len(mat[0])):
cords.append([i, j])
nums.append(mat[i][j])
i += 1
j += 1
nums.sort()
for k in range(len(nums)):
cord_i, cord_j = cords[k]
mat[cord_i][cord_j] = nums[k]
return mat

Leetcode 1329. 将矩阵按对角线排序 题解的更多相关文章

  1. LeetCode:螺旋矩阵||【59】

    LeetCode:螺旋矩阵||[59] 题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ...

  2. LeetCode:螺旋矩阵【54】

    LeetCode:螺旋矩阵[54] 题目描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], ...

  3. C#版(击败100.00%的提交) - Leetcode 151. 翻转字符串里的单词 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  4. LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他

    LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...

  5. 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)

    洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...

  6. 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素

    [python]Leetcode每日一题-寻找旋转排序数组中的最小元素 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...

  7. 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素2

    [python]Leetcode每日一题-寻找旋转排序数组中的最小元素2 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...

  8. LeetCode 378. 有序矩阵中第K小的元素(Kth Smallest Element in a Sorted Matrix) 13

    378. 有序矩阵中第K小的元素 378. Kth Smallest Element in a Sorted Matrix 题目描述 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩 ...

  9. 基于胜率矩阵的PageRank排序

      在做博弈模型评估的时候,遇到一个问题是如何评价多个模型的优劣.例如我有训练好的三个围棋模型A,B,C,两两之间对打之后有一个胜负关系,如何对这三个模型进行排序呢?通常对于人类选手这种水平有波动的情 ...

随机推荐

  1. selenium切换iframe

    from selenium import webdriver br = webdriver.Chrome() br.get("tps://study.163.com/") ifra ...

  2. 第十章 nginx常用配置介绍

    一.虚拟主机 1.配置方式 #虚拟主机配置方式:1.基于多IP的方式2.基于多端口的方式3.基于多域名的方式 2.方式一:基于多IP的方式 1.第一个配置文件[root@web02 /etc/ngin ...

  3. ES5新增数组的方法

    ES5新增数组的方法 ES5新增数组常见方法(indexOf/forEach/map/filter/some/every) .indexOf( data , start)  检测数组中是否存在指定数据 ...

  4. springboot入门系列(四):SpringBoot和Mybatis配置多数据源连接多个数据库

    SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBo ...

  5. 面试不再慌,看完这篇保证让你写HashMap跟玩一样

    今天这篇文章给大家讲讲hashmap,这个号称是所有Java工程师都会的数据结构.为什么说是所有Java工程师都会呢,因为很简单,他们不会这个找不到工作.几乎所有面试都会问,基本上已经成了标配了. 在 ...

  6. 在git下如何创建分支

    创建main分支下的远程分支dev: 直接输入dev,就可以创建在main分支下的远程分支dev了 在dev下创建devdev

  7. docker-compose启动consul集群

    version: '2.0' services: consul-server1: image: consul:latest hostname: "consul-server1" p ...

  8. github初始化版本

    git命令上传初始化项目 (1)先去github创建自己的项目版本 (2)然后找到自己想要上传代码版本的目录$ git init $ git add ./src ./pom.xml $ git com ...

  9. windows下安装redis集群

    前几天在自己在本机win10 电脑下部署了redis集群. 主要通过的是网上两个博客: 如何在windows下部署redis集群:https://blog.csdn.net/zsg88/article ...

  10. JavaScript实现基于对象的栈

    class Stack { constructor() { this.count = 0; this.items = {}; } push(element) { this.items[this.cou ...