[LeetCode] 1424. Diagonal Traverse II
Given a 2D integer array nums, return all elements of nums in diagonal order as shown in the below images.
Example 1:
Input: nums = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,4,2,7,5,3,8,6,9]
Example 2:
Input: nums = [[1,2,3,4,5],[6,7],[8],[9,10,11],[12,13,14,15,16]]
Output: [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]
Constraints:
1 <= nums.length <= 105
1 <= nums[i].length <= 105
1 <= sum(nums[i].length) <= 105
1 <= nums[i][j] <= 105
对角线遍历 II。
给你一个列表 nums ,里面每一个元素都是一个整数列表。请你依照下面各图的规则,按顺序返回 nums 中对角线上的整数。
思路
这道题跟版本一类似,还是让我们以对角线分组输出矩阵中的值。我们可以把 i + j
当做 key 放入一个 hashmap,因为在同一条对角线上的元素的 i + j
的值是相同的,所以我们可以这样分组。注意因为我们对整个二维 list 是逐行扫描的所以当我们加入元素的时候,元素需要被加入他所在 hashmap 那条对角线的第一个,这样顺序才不会乱。
复杂度
时间O(mn)
空间O(mn) - output有这么多元素
代码
Java实现
1 |
|
[LeetCode] 1424. Diagonal Traverse II
https://shurui91.github.io/posts/3710440472.html