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

每日一题——LeetCode1266.访问所有点的最小时间_第1张图片每日一题——LeetCode1266.访问所有点的最小时间_第2张图片

方法一 个人方法 找规律:

当前的点为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

每日一题——LeetCode1266.访问所有点的最小时间_第3张图片

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

var minTimeToVisitAllPoints = function(points) {
    let time=0
    for(let i=0;iy){
               time+=x
           }
       }
    }
    return time
};

消耗时间和内存情况:

每日一题——LeetCode1266.访问所有点的最小时间_第4张图片

其实可以更加简化:

不用分那么多情况,两点间距离就是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
};

消耗时间和内存情况:

每日一题——LeetCode1266.访问所有点的最小时间_第5张图片

你可能感兴趣的:(每日一题,javascript,算法,leetcode)