Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmCalculate the Manhattan Distance between two cells of given 2D array

Calculate the Manhattan Distance between two cells of given 2D array

Given a 2D array of size M * N and two points in the form (X1, Y1) and (X2 , Y2) where X1 and X2 represents the rows and Y1 and Y2 represents the column. The task is to calculate the Manhattan distance between the given points. 

Examples:

Input: M = 5, N = 5, X1 = 1, Y1 = 2, X2 = 3, Y2 = 3
Output: 3
Explanation: As per the definition, the Manhattan the distance is same as sum of the absolute difference of the coordinates.

Input: M = 5, N = 5, X1 = 4, Y1 = 2, X2 = 4, Y2 = 2
Output: 0

 

Approach: The approach is based on mathematical observation. The Manhattan distance between two points is the sum of absolute difference of the coordinates.

Manhattan distance = |X1 – X2| + |Y1 – Y2|

Below is the implementation of the above approach.

C++




// C++ code to implement above approach
#include <bits/stdc++.h>
using namespace std;
 
// Code to calculate Manhattan distance
int manhattanDist(int M, int N, int X1,
                  int Y1, int X2, int Y2)
{
    int dist = abs(X2 - X1) + abs(Y2 - Y1);
    return dist;
}
 
// Driver code
int main()
{
    // Define size of 2-D array
    int M = 5, N = 5;
 
    // First point
    int X1 = 1, Y1 = 2;
 
    // Second point
    int X2 = 3, Y2 = 3;
 
    cout << manhattanDist(M, N, X1, Y1, X2, Y2);
    return 0;
}


Java




// java code to implement above approach
 
class GFG
{
 
  // Code to calculate Manhattan distance
  static int manhattanDist(int M, int N, int X1,
                           int Y1, int X2, int Y2) {
    int dist = Math.abs(X2 - X1) + Math.abs(Y2 - Y1);
    return dist;
  }
 
  // Driver code
  public static void main(String args[])
  {
 
    // Define size of 2-D array
    int M = 5, N = 5;
 
    // First point
    int X1 = 1, Y1 = 2;
 
    // Second point
    int X2 = 3, Y2 = 3;
 
    System.out.println(manhattanDist(M, N, X1, Y1, X2, Y2));
  }
}
 
// This code is contributed by gfgking.


Python3




# Python code for the above approach
import math as Math
 
# Code to calculate Manhattan distance
def manhattanDist(M, N, X1, Y1, X2, Y2):
    dist = Math.fabs(X2 - X1) + Math.fabs(Y2 - Y1)
    return (int)(dist)
 
# Driver code
 
# Define size of 2-D array
M = 5
N = 5
 
# First point
X1 = 1
Y1 = 2
 
# Second point
X2 = 3
Y2 = 3
 
print(manhattanDist(M, N, X1, Y1, X2, Y2))
 
# This code is contributed by Saurabh Jaiswal


C#




// C# code to implement above approach
using System;
class GFG {
 
  // Code to calculate Manhattan distance
  static int manhattanDist(int M, int N, int X1, int Y1,
                           int X2, int Y2)
  {
    int dist = Math.Abs(X2 - X1) + Math.Abs(Y2 - Y1);
    return dist;
  }
 
  // Driver code
  public static void Main()
  {
 
    // Define size of 2-D array
    int M = 5, N = 5;
 
    // First point
    int X1 = 1, Y1 = 2;
 
    // Second point
    int X2 = 3, Y2 = 3;
 
    Console.WriteLine(
      manhattanDist(M, N, X1, Y1, X2, Y2));
  }
}
 
// This code is contributed by ukasp.


Javascript




<script>
       // JavaScript code for the above approach
 
       // Code to calculate Manhattan distance
       function manhattanDist(M, N, X1,
           Y1, X2, Y2) {
           let dist = Math.abs(X2 - X1) + Math.abs(Y2 - Y1);
           return dist;
       }
 
       // Driver code
 
       // Define size of 2-D array
       let M = 5, N = 5;
 
       // First point
       let X1 = 1, Y1 = 2;
 
       // Second point
       let X2 = 3, Y2 = 3;
 
       document.write(manhattanDist(M, N, X1, Y1, X2, Y2));
 
 // This code is contributed by Potta Lokesh
   </script>


 
 

Output

3

Time Complexity: O(1)
Auxiliary Space: O(1)

 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nango Kalahttps://www.kala.co.za
Experienced Support Engineer with a demonstrated history of working in the information technology and services industry. Skilled in Microsoft Excel, Customer Service, Microsoft Word, Technical Support, and Microsoft Office. Strong information technology professional with a Microsoft Certificate Solutions Expert (Privet Cloud) focused in Information Technology from Broadband Collage Of Technology.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments