✅Min Steps in Infinite Grid
Using Delta and recursion to actually reach point
int getMinDist(int x1, int y1, int x2, int y2, int step = 0) {
// reached
if(x1 == x2 && y1 == y2)
return step;
int xDelta = x2 - x1;
int yDelta = y2 - y1;
// move leftward or rightward
x1 += (xDelta > 0) ? 1 : (xDelta < 0) ? -1 : 0;
// move upward or downward
y1 += (yDelta > 0) ? 1 : (yDelta < 0) ? -1 : 0;
// count as one step and find min distance from this point on
return getMinDist(x1, y1, x2, y2, step + 1);
}
int Solution::coverPoints(vector<int> &A, vector<int> &B) {
int dist = 0;
for(int i = 0; i + 1 < A.size(); i++)
dist += getMinDist(A[i], B[i], A[i + 1], B[i + 1]);
return dist;
}
Properly Using Delta
Last updated