方法一 个人方法 找规律:
当前的点为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=0for(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 = 0for (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
};
消耗时间和内存情况: