当前位置:网站首页>LeetCode:498. 对角线遍历
LeetCode:498. 对角线遍历
2022-07-06 08:44:00 【Bertil】
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
示例 1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,4,7,5,3,6,8,9]
示例 2:
输入:mat = [[1,2],[3,4]]
输出:[1,2,3,4]
提示:
- m == mat.length
- n == mat[i].length
- 1 <= m, n <= 10^4
- 1 <= m * n <= 10^4
- -10^5 <= mat[i][j] <= 10^5
解题思路
1.首先遍历矩阵,然后新建一个map来存储key和value,key为横纵坐标之和,value为key相等的元素数组(即每条对角线的元素组成的数组)
2.然后新建一个结果数组res,遍历map,将对角线是偶数(即第2条对角线、第4条对角线…,满足key % 2 === 1)的元素正序放入res中,将对角线是奇数(即第1条对角线、第3条对角线…,满足key % 2 === 0)的元素倒序放入res中,最后返回res即可
代码
/** * @param {number[][]} mat * @return {number[]} */
var findDiagonalOrder = function(mat) {
const row = mat.length
const col = mat[0].length
const record = new Map()
for (let i = 0; i < row; i++) {
for (let j = 0; j < col; j++) {
const key = i + j
if (!record.has(key)) record.set(key, [])
record.get(key).push(mat[i][j])
}
}
const res = []
for (const [key, nums] of record.entries()) {
// entries()获取所有的键值对数组:[[key1, value1], [key2, value2]]
key % 2 === 1 ? res.push(...nums) : res.push(...nums.reverse())
}
return res
};
边栏推荐
- Revit 二次开发 HOF 方式调用transaction
- 软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
- Sublime text in CONDA environment plt Show cannot pop up the problem of displaying pictures
- ROS编译 调用第三方动态库(xxx.so)
- Hutool gracefully parses URL links and obtains parameters
- 软件卸载时遇到trying to use is on a network resource that is unavailable
- Sublime text using ctrl+b to run another program without closing other runs
- Double pointeur en langage C - - modèle classique
- Research and investment forecast report of citronellol industry in China (2022 Edition)
- R language uses the principal function of psych package to perform principal component analysis on the specified data set. PCA performs data dimensionality reduction (input as correlation matrix), cus
猜你喜欢
随机推荐
JS inheritance method
TDengine 社区问题双周精选 | 第三期
FairGuard游戏加固:游戏出海热潮下,游戏安全面临新挑战
China high purity silver nitrate Market Research and investment strategy report (2022 Edition)
sublime text中conda环境中plt.show无法弹出显示图片的问题
PC easy to use essential software (used)
Bottom up - physical layer
Navicat premium create MySQL create stored procedure
深度剖析C语言指针
egg. JS project deployment online server
Navicat Premium 创建MySql 创建存储过程
自动化测试框架有什么作用?上海专业第三方软件测试公司安利
How to conduct interface test? What are the precautions? Nanny level interpretation
电脑F1-F12用途
@JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)
Unified ordering background interface product description Chinese garbled
LeetCode:394. 字符串解码
软件卸载时遇到trying to use is on a network resource that is unavailable
TP-LINK enterprise router PPTP configuration
LeetCode:221. 最大正方形