ARTS Week 28

Algorithm

本周的算法题为 498. 对角线遍历

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

img
img
示例 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 === 0return [];
    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 来存储遍历的结果。接着,初始化变量 rowcol 分别代表当前的行和列,d 代表遍历的方向。在矩阵中,向右上方向移动,行数减小,列数增大,所以,当d=1时,为右上方向遍历,当d=-1时,为左下方向遍历。

接下来,通过一个循环来遍历整个矩阵。在每一次循环中,将当前位置的值加入到结果数组中,然后根据当前的遍历方向 d 来更新 rowcol 的值。同时,根据不同的情况(比如超出边界),调整 rowcold 的值,以确保遍历的方向是正确的。

最后,返回结果数组。

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 多平台发布

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AR7_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值