-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
65 lines (59 loc) · 2.04 KB
/
main.cpp
File metadata and controls
65 lines (59 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Source: https://leetcode.com/problems/minimum-time-visiting-all-points
// Title: Minimum Time Visiting All Points
// Difficulty: Easy
// Author: Mu Yang <http://muyang.pro>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// On a 2D plane, there are `n` points with integer coordinates `points[i] = [x_i, y_i]`. 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 `1` second, you can either:
//
// - move vertically by oneunit,
// - move horizontally by one unit, or
// - move diagonally `sqrt(2)` units (in other words, move one unit vertically then one unit horizontally in `1` second).
//
// - 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:**
// https://assets.leetcode.com/uploads/2019/11/14/1626_example_1.PNG
//
// ```
// 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 == n`
// - `1 <= n<= 100`
// - `points[i].length == 2`
// - `-1000<= points[i][0], points[i][1]<= 1000`
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <vector>
using namespace std;
class Solution {
public:
int minTimeToVisitAllPoints(vector<vector<int>>& points) {
int n = points.size();
auto ans = 0;
for (auto i = 1; i < n; ++i) {
auto x = abs(points[i][0] - points[i - 1][0]);
auto y = abs(points[i][1] - points[i - 1][1]);
ans += max(x, y);
}
return ans;
}
};