На плоскости имеется n
точек с целочисленными координатами points[i] = [xi, yi]
. Ваша задача — найти минимальное время в секундах для посещения всех точек.
Передвигаться можно по следующим правилам:
- За одну секунду вы всегда можете переместиться либо по вертикали, либо по горизонтали на одну единицу, либо по диагонали (это означает перемещение на одну единицу по вертикали и одну единицу по горизонтали за одну секунду).
- Вы должны посетить точки в том же порядке, в котором они появляются в массиве.
Пример 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
Пример 2:
Input: points = [[3,2],[-2,2]] Output: 5
Ограничения:
points.length == n
1 <= n <= 100
points[i].length == 2
-1000 <= points[i][0], points[i][1] <= 1000
Решение
/** * @param {number[][]} points * @return {number} */ var minTimeToVisitAllPoints = function(points) { let sec = 0; for(i = 0; i < points.length - 1; i++) { let [currX, currY] = [points[i][0], points[i][1]]; let [nextX, nextY] = [points[i+1][0], points[i+1][1]]; let diffX = Math.abs(nextX - currX); let diffY = Math.abs(nextY - currY); sec += Math.max(diffX, diffY); } return sec; };