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
1
second, 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 in1
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:
Input: points = {{1,1},{3,4},{-1,0}} Output: 7
Approach
Java
public class MinTimeVisitingAllPoints {public static void main(String[] args) {int points[][] = { { 1, 1 }, { 3, 4 }, { -1, 0 } };System.out.println(minTimeToVisitAllPoints(points));}static int minTimeToVisitAllPoints(int[][] points) {int cnt = 0;for (int i = 0; i < points.length - 1; i++) {int x1 = points[i][0];int y1 = points[i][1];int x2 = points[i + 1][0];int y2 = points[i + 1][1];cnt = cnt + Math.max(Math.abs(y2 - y1), Math.abs(x2 - x1));}return cnt;}}
C++
#include <bits/stdc++.h>using namespace std;int minTimeToVisitAllPoints(vector<vector<int>>& points){int cnt=0;for(int i=0;i<points.size()-1;i++){int x1=points[i][0];int y1=points[i][1];int x2=points[i+1][0];int y2=points[i+1][1];cnt=cnt+max(abs(y2-y1),abs(x2-x1));}return cnt;}int main(){vector<vector<int>> points ={{1,1},{3,4},{-1,0}};cout<<minTimeToVisitAllPoints(points);return 0;}
No comments:
Post a Comment