Question:
Given two unsorted arrays of non-negative integers, 'arr1' and 'arr2' of size 'N' and 'M', respectively. Your task is to find the pair of elements (one from each array), such that their absolute (non-negative) difference is the smallest, and return the difference.
Example :
The smallest difference pair is (20, 17) with an absolute difference of 3. So, the answer is 3.
package learningJava;
public class pairSmallest {
public static int pairDifference(int arr1[], int arr2 [], int min ) {
for(int i = 0 ; i < arr1.length; i++) {
for(int j = 0 ; j < arr2.length; j++) { //iterate from 0th index to arr2 size
int difference = Math.abs(arr1[i] - arr2[j]); //difference between 2 arrays
//Math.abs is a function for get absolute value instead negative value
if(difference < min) {
min = difference; // store difference on min value
}
}
}
return min;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr1 [] = {10, 20, 30};
int arr2 [] = {17, 15};
int min = Integer.MAX_VALUE; //Initialize min to a maximum integer value, which is Integer.MAX_VALUE function
int result = pairDifference(arr1, arr2, min);
System.out.println(result);
}
}
Dry run -----------------
Input:
arr1: [10, 20, 30] (this is array input)
arr2: [17, 15] (this is second array input)
min: Initialized to Integer.MAX_VALUE (2147483647)
.Integer.MAX_VALUE
is a constant in Java that represents the maximum value that can be held by a 32-bit signed integer. It has a value of 2,147,483,647. This value is often used when you want to initialize a variable to represent the maximum possible integer value in Java.
Initialize min to a maximum integer value (Integer.MAX_VALUE).
Start the pairDifference method:
Enter the outer loop for i from 0 to 2 (arr1.length):
i = 0, arr1[i] is 10
Enter the inner loop for j from 0 to 1 (arr2.length):
j = 0, arr2[j] is 17
Calculate the absolute difference: |10 - 17| = 7
Check if 7 < min (2147483647), it is true.
Update min to 7.
j = 1, arr2[j] is 15
Calculate the absolute difference: |10 - 15| = 5
Check if 5 < min (7), it is true.
Update min to 5.
Move to the next element in arr1.
i = 1, arr1[i] is 20
Enter the inner loop for j from 0 to 1 (arr2.length):
j = 0, arr2[j] is 17
Calculate the absolute difference: |20 - 17| = 3
Check if 3 < min (5), it is true.
Update min to 3.
j = 1, arr2[j] is 15
Calculate the absolute difference: |20 - 15| = 5
Check if 5 < min (3), it is true.
Update min to 5.
Move to the next element in arr1.
i = 2, arr1[i] is 30
Enter the inner loop for j from 0 to 1 (arr2.length):
j = 0, arr2[j] is 17
Calculate the absolute difference: |30 - 17| = 13
Check if 13 < min (5), it is false.
j = 1, arr2[j] is 15
Calculate the absolute difference: |30 - 15| = 15
Check if 15 < min (5), it is false.
Exit the loops, and the value of min is 5, which represents the minimum absolute difference between elements in the arrays.
Print the value of min, which is 5.
So, the program correctly finds and prints the minimum absolute difference, which is 5, between elements in the arrays arr1 and arr2.
Comments
Post a Comment