1266-访问所有点的最小时间
 
                平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi] 。请你计算访问所有这些点需要的 最小时间
(以秒为单位)。
你需要按照下面的规则在平面上移动:
- 每一秒内,你可以: - 沿水平方向移动一个单位长度,或者
- 沿竖直方向移动一个单位长度,或者
- 跨过对角线移动 sqrt(2)个单位长度(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。
 
- 必须按照数组中出现的顺序来访问这些点。
- 在访问某个点时,可以经过该点后面出现的点,但经过的那些点不算作有效访问。
示例 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]**   
从 [1,1] 到 [3,4] 需要 3 秒 
从 [3,4] 到 [-1,0] 需要 4 秒
一共需要 7 秒
示例 2:
**输入:** points = [[3,2],[-2,2]]
**输出:** 5
提示:
- points.length == n
- 1 <= n <= 100
- points[i].length == 2
- -1000 <= points[i][0], points[i][1] <= 1000
方法一:切比雪夫距离
对于平面上的两个点 x = (x0, x1) 和 y = (y0, y1),设它们横坐标距离之差为 dx = |x0 - y0|,纵坐标距离之差为 dy = |x1 - y1|,对于以下三种情况,我们可以分别计算出从 x 移动到 y 的最少次数:
- dx < dy:沿对角线移动- dx次,再竖直移动- dy - dx次,总计- dx + (dy - dx) = dy次;
- dx == dy:沿对角线移动- dx次;
- dx > dy:沿对角线移动- dy次,再水平移动- dx - dy次,总计- dy + (dx - dy) = dx次。
可以发现,对于任意一种情况,从 x 移动到 y 的最少次数为 dx 和 dy 中的较大值 max(dx, dy),这也被称作 x 和 y 之间的 切比雪夫距离 。
由于题目要求,需要按照数组中出现的顺序来访问这些点。因此我们遍历整个数组,对于数组中的相邻两个点,计算出它们的切比雪夫距离,所有的距离之和即为答案。
| 1 | class Solution { | 
| 1 | class Solution: | 
复杂度分析
- 时间复杂度:O(N),其中 N 是数组的长度。 
- 空间复杂度:O(1)。 
         Comments