每日一题——LeetCode1266.访问所有点的最小时间

发布时间:2024年01月18日

方法一 个人方法 找规律:

当前的点为current,下一个点为next,x为两点横坐标之间距离,y为两点竖坐标之间距离

1、当两点横坐标相同时,两点距离为y

2、当两点竖坐标相同时,两点距离为x

3、当两点x与y相同时,则两点的连线在直线y=x上,那么两点的距离既是x也是y

4、当y>x时,x可以转换为y的一部分,其实距离就是y,同理x>y,y可以转为x的一部分,距离就是x

比如:从(1,1)点到(3,4)点的距离,其实和(3,1)到(3,4)的距离是一样的。

var minTimeToVisitAllPoints = function(points) {
    let time=0
    for(let i=0;i<points.length-1;i++){
        let current=points[i],next=points[i+1]
        let x=Math.abs(next[0]-current[0]),y=Math.abs(next[1]-current[1])
       if(current[1]===next[1]){
            time+=x
       }else if(current[0]===next[0]){
           time+=y
       }else if(x===y){
           time+=x
       }else{
           if(x<y){
               time+=y
           }else if(x>y){
               time+=x
           }
       }
    }
    return time
};

消耗时间和内存情况:

其实可以更加简化:

不用分那么多情况,两点间距离就是x轴距离和y轴距离绝对值更大的那一个:

var minTimeToVisitAllPoints = function (points) {
    let result = 0
    for (let i = 0; i < points.length - 1; i++) {
        let x = Math.abs(points[i + 1][0] - points[i][0])
        let y = Math.abs(points[i + 1][1] - points[i][1])
        result += Math.max(x, y)
    }
    return result
};

消耗时间和内存情况:

文章来源:https://blog.csdn.net/weixin_52878347/article/details/135671569
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。