Description
On a 2D plane, there are n points with integer coordinates points[i] = [xi, yi]. Return the minimum time in seconds to visit all the points in the order given by points.
You can move according to these rules:
- In
1second, you can either:- move vertically by one unit,
- move horizontally by one unit, or
- move diagonally
sqrt(2)units (in other words, move one unit vertically then one unit horizontally in1second).
- You have to visit the points in the same order as they appear in the array.
- You are allowed to pass through points that appear later in the order, but these do not count as visits.
Example 1:
Input: points = [[1,1],[3,4],[-1,0]] Output: 7 Explanation: One optimal path is [1,1] -> [2,2] -> [3,3] -> [3,4] -> [2,3] -> [1,2] -> [0,1] -> [-1,0] Time from [1,1] to [3,4] = 3 seconds Time from [3,4] to [-1,0] = 4 seconds Total time = 7 seconds
Example 2:
Input: points = [[3,2],[-2,2]] Output: 5
Constraints:
points.length == n1 <= n <= 100points[i].length == 2-1000 <= points[i][0], points[i][1] <= 1000
Solutions
This function calculates the minimum time to visit all points by computing the Chebyshev distance (chessboard distance) between consecutive points. It iterates through each point starting from the second one, calculating the time for each step as the maximum of the absolute differences in x and y coordinates between the current and previous point. This works because in chessboard movement, moving diagonally or horizontally/vertically all take 1 time unit, so the longest axis determines the total time. The function returns the total accumulated time needed to visit all points in the given order.
/**
* @param {number[][]} points
* @return {number}
*/
var minTimeToVisitAllPoints = function(points) {
let res = 0;
for (let i = 1; i < points.length; i++) {
res += Math.max(
Math.abs(points[i][0] - points[i - 1][0]),
Math.abs(points[i][1] - points[i - 1][1]),
);
}
return res;
};