Algorithm
本周的算法题为 498. 对角线遍历
给你一个大小为 m x n
的矩阵 mat
,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
![img](https://img-blog.csdnimg.cn/img_convert/3ef22280245c8c416fd42a86326d2ffe.png)
示例 1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,4,7,5,3,6,8,9]
实现代码如下:
var findDiagonalOrder = function(mat) {
if (mat.length === 0) return [];
const m = mat.length;
const n = mat[0].length;
const result = [];
let row = 0, col = 0, d = 1;
for (let i = 0; i < m * n; i++) {
result.push(mat[row][col]);
row -= d;
col += d;
if (row >= m) { row = m - 1; col += 2; d = -d; }
if (col >= n) { col = n - 1; row += 2; d = -d; }
if (row < 0) { row = 0; d = -d; }
if (col < 0) { col = 0; d = -d; }
}
return result;
};
解题思路:
首先,检查矩阵的行数,如果矩阵是空的,直接返回一个空数组。
然后,获取矩阵的行数 m
和列数 n
,并初始化一个空数组 result
来存储遍历的结果。接着,初始化变量 row
和 col
分别代表当前的行和列,d
代表遍历的方向。在矩阵中,向右上方向移动,行数减小,列数增大,所以,当d=1
时,为右上方向遍历,当d=-1
时,为左下方向遍历。
接下来,通过一个循环来遍历整个矩阵。在每一次循环中,将当前位置的值加入到结果数组中,然后根据当前的遍历方向 d
来更新 row
和 col
的值。同时,根据不同的情况(比如超出边界),调整 row
、col
和 d
的值,以确保遍历的方向是正确的。
最后,返回结果数组。
Review
Rockets and planes chase the solar eclipse - Breaking News English Lesson
周一,天文学家和飞行员在天空中追逐日食。当时,加拿大、美国和墨西哥的数百万人凝视着天空,瞥见了罕见的天体事件——日全食。太阳、月亮和地球对齐,挡住了太阳圆盘的视线。 美国宇航局为其高空WB-57飞机配备了特殊的传感器和仪器,以从独特的太阳事件中收集信息。飞行员在15,240米高的日食中导航,以观察日冕 - 太阳的外表面。美国宇航局还向地球的高层大气层(称为电离层)发射火箭,试图解开太阳的一些最大谜团。
当月亮遮挡太阳的脸时,就会发生日全食。这种天体现象瞬间将白天变成黑夜。整体性意味着太阳的日冕变得比太阳的圆盘暗一百万倍。这使得科学家更容易观察和研究太阳。太阳天体物理学家阿米尔·卡斯皮博士解释说:“日全食让我们以任何其他时间和方式都不可能的方式研究和观察日冕。日食经常对自然产生令人困惑的影响。它们短暂地搅动了夜行动物,使鸟类和昆虫变得寂静。驾驶员也可能受到影响,应随着照明和能见度条件的变化而减速。
Tip
Cannot find module xxx or its corresponding type declarations.
在Vue3项目的vite.config.ts中设置别名之后,在.vue文件中引入会报红提示这个没有找到的错误,验证了下,虽然不影响功能使用,但是体验不好。
VSCode
中使用Ctrl+Shift+P
,然后输入type
,选择Volar:Select TypeScript Version...
,然后选择Use Workspace Version xxx
即可。
Share
你要听人家说什么,而不是要听人家怎么说。
本文由 mdnice 多平台发布