Сложность: easy
На двумерной плоскости имеется n точек с целочисленными координатами points[i] = [xi, yi]. Верните минимальное время в секундах для посещения всех точек в порядке, заданном точками. Вы можете перемещаться по следующим правилам: за 1 секунду вы можете либо: переместиться по вертикали на одну единицу, по горизонтали на одну единицу, либо по диагонали sqrt(2) единиц (другими словами, переместиться на одну единицу по вертикали и на одну единицу по горизонтали за 1 секунду). Вы должны посетить точки в том же порядке, в котором они появляются в массиве. Вы можете проходить через точки, которые появляются позже в порядке, но они не считаются за посещение.
Пример:
Input: points = [[1,1],[3,4],[-1,0]]
Output: 7
👨💻 Алгоритм:
1⃣Инициализируйте переменную для хранения минимального времени.
2⃣Последовательно проходите по всем точкам и вычисляйте минимальное время для перехода от текущей точки к следующей.
3⃣Суммируйте время переходов для получения общего минимального времени.
😎 Решение:
class Solution {
func minTimeToVisitAllPoints(_ points: [[Int]]) -> Int {
var time = 0
for i in 0..<points.count - 1 {
time += distance(points[i], points[i + 1])
}
return time
}
private func distance(_ p1: [Int], _ p2: [Int]) -> Int {
return max(abs(p1[0] - p2[0]), abs(p1[1] - p2[1]))
}
}Ставь 👍 и забирай 📚 Базу знаний