假设有一些点作为数组给出。我们必须找到访问所有地点的最短时间(以秒为单位)。有一些条件。
一秒钟内,它可以垂直,水平和对角移动
我们必须按照数组中出现的顺序访问这些点。
因此,如果点是[[(1,1),(3,4),(-1,0)],则输出将为7。如果我们检查最短路径的序列,则序列将为(1、1 ),(2、2),(3、3),(3、4),(2、3),(1、2),(0、1),(-1、0)
为了解决这个问题,我们将找到两个连续点的x坐标差的最大值和两个连续点的y坐标差的最大值。最大值将被加在一起。
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h> using namespace std; class Solution { public: int minTimeToVisitAllPoints(vector<vector<int>>& p) { int ans = 0; int n = p.size(); for(int i = 1; i < n; i++){ ans += max(abs(p[i][0] - p[i-1][0]), abs(p[i][1] - p[i-1] [1])); } return ans; } }; main(){ Solution ob; vector<vector<int>> c = {{1,1},{3,4},{-1,0}}; cout << ob.minTimeToVisitAllPoints(c); }
[[1,1],[3,4],[-1,0]]
输出结果
7