Return to site

Min Steps in Infinite Grid

Min Steps in Infinite Grid

You are in an infinite 2D grid where you can move in any of the 8 directions :

(x,y) to (x+1, y), (x - 1, y), (x, y+1), (x, y-1), (x-1, y-1), (x+1,y+1), (x-1,y+1), (x+1,y-1)

You are given a sequence of points and the order in which you need to cover the points. Give the minimum number of steps in which you can achieve it. You start from the first point.

Example :

Input : [(0, 0), (1, 1), (1, 2)] Output : 2

It takes 1 step to move from (0, 0) to (1, 1). It takes one more step to move from (1, 1) to (1, 2).

public class Solution {
public int coverPoints(ArrayList<Integer> X, ArrayList<Integer> Y){
int points = X.size();
int totalsteps = 0;
for(int i=0; i<points-1; i++){
totalsteps += stepsReq(X.get(i), Y.get(i), X.get(i+1), Y.get(i+1));
}
return totalsteps;
}
    
public int stepsReq(int x1, int y1, int x2, int y2){
int xSteps = Math.abs(x2-x1);
int ySteps = Math.abs(y2-y1);
return xSteps >= ySteps ? xSteps : ySteps;
}
}