1266.访问所有点的最小时间(简单)- LeetCode

该博客主要解析了LeetCode第1266题的解决方案,强调了解题思路是计算两点之间的切比雪夫距离以找到最小时间。博主提供了自己的Python实现,时间复杂度为O(n),空间复杂度为O(1),并提及官方解法与个人解法一致。

题目描述

在这里插入图片描述

自己解法

由题目可知,所要输出的是经过所有点的时间,所以路径方向并不是最关键的,最短时间应该是:两个相邻点x坐标之差的绝对值、y坐标之差的绝对值中较大的一方,Python代码实现:

class Solution:
    def minTimeToVisitAllPoints(self, points: List[List[int]]) -> int:
        ans = 0
        for i in range(1,len(points)):
            ans += max(abs(points[i][0]-points[i-1][0]),abs(points[i][1]-points[i-1][1]))
        return ans

时间复杂度: O ( n ) O(n) O(n) ;空间复杂度: O ( 1 ) O(1) O(1)

在这里插入图片描述

官方解法

与自己解法一致,从点 A A A到点 B B B所需时间其实就是计算两点之间的切比雪夫距离,详细解答参考官方解法,Python代码为:

class Solution:
    def minTimeToVisitAllPoints(self, points: List[List[int]]) -> int:
        x0, x1 = points[0]
        ans = 0
        for i in range(1, len(points)):
            y0, y1 = points[i]
            ans += max(abs(x0 - y0), abs(x1 - y1))
            x0, x1 = points[i]
        return ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值