1424-对角线遍历 II

Raphael Liu Lv10

给你一个列表 nums ,里面每一个元素都是一个整数列表。请你依照下面各图的规则,按顺序返回 nums 中对角线上的整数。

示例 1:

![](https://assets.leetcode-cn.com/aliyun-lc-
upload/uploads/2020/04/23/sample_1_1784.png)

**输入:** nums = [[1,2,3],[4,5,6],[7,8,9]]
**输出:** [1,4,2,7,5,3,8,6,9]

示例 2:

![](https://assets.leetcode-cn.com/aliyun-lc-
upload/uploads/2020/04/23/sample_2_1784.png)

**输入:** nums = [[1,2,3,4,5],[6,7],[8],[9,10,11],[12,13,14,15,16]]
**输出:** [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]

示例 3:

**输入:** nums = [[1,2,3],[4],[5,6,7],[8],[9,10,11]]
**输出:** [1,4,2,5,3,8,6,9,7,10,11]

示例 4:

**输入:** nums = [[1,2,3,4,5,6]]
**输出:** [1,2,3,4,5,6]

提示:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i].length <= 10^5
  • 1 <= nums[i][j] <= 10^9
  • nums 中最多有 10^5 个数字。

Problem: 1424. 对角线遍历 II

[TOC]

思路

  • 按(横纵坐标和, 纵坐标, 值)排序

解题方法

  • 存放所有值
  • 再按(横纵坐标和, 纵坐标, 值)排序

Code

[]
1
2
3
4
5
6
7
8
9
10

class Solution:
def findDiagonalOrder(self, nums: List[List[int]]) -> List[int]:
ans = []
for i,row in enumerate(nums):
for j,c in enumerate(row):
ans.append([i+j, j, c])
ans.sort()
return [c[2] for c in ans]

 Comments
On this page
1424-对角线遍历 II