leetcode--1266.访问所有点的最小时间

问题描述:
在这里插入图片描述
示例1:

在这里插入图片描述
输入:points = [[1,1],[3,4],[-1,0]]
输出:7
解释:一条最佳的访问路径是: [1,1] -> [2,2] -> [3,3] -> [3,4] -> [2,3] -> [1,2] -> [0,1] -> [-1,0] qi
从 [1,1] 到 [3,4] 需要 3 秒
从 [3,4] 到 [-1,0] 需要 4 秒
一共需要 7 秒

示例2:

输入:points = [[3,2],[-2,2]]
输出:5

思路:

切比雪夫距离:
两个点xy,dx(x和y的x坐标距离差),dy(x和y的y坐标距离差)
如果(dx>dy),那么就将点先移动dy个单位,然后再移动dx-dy的长度,那么移动的距离就是(dy+dx-dy)=dx
同理
如果(dy>dx),那么就将点先移动dx个单位,然后再移动dy-dx的长度,那么移动的距离就是(dx+dy-dx)=dy
如果(dx=dy),那么就将移动的距离就是=dx
所以只需要遍历所有的点,找到两个点中的max(dx,dy),然后将所有的两点最短长度相加起来就是最终移动的最短长度.

java代码:

class Solution {
    public int minTimeToVisitAllPoints(int[][] points) {
        int count =0;
        for(int i=0;i<points.length-1;i++){
            int dx=Math.abs(points[i+1][0]-points[i][0]);
            int dy=Math.abs(points[i+1][1]-points[i][1]);
           count+=Math.max(dx,dy);
        }
        return count;
    }
}

在这里插入图片描述

发布了73 篇原创文章 · 获赞 7 · 访问量 3565

猜你喜欢

转载自blog.csdn.net/weixin_43801718/article/details/103586926