Count of all pairs in an Array with minimum absolute difference
Last Updated :
01 Apr, 2021
Given an integer array arr[] of size N, the task is to count the total number of distinct pairs having minimum absolute difference.
Examples:
Input: arr[] = {4, 2, 1, 3}
Output: 3
Explanation:
The minimum absolute difference between the pairs {1, 2}, {2, 3}, {3, 4} is 1.
Input: arr[] = {1, 3, 8, 10, 15}
Output: 2
Explanation:
The minimum absolute difference between the pairs {1, 3}, {8, 10} is 2.
Approach: The idea is to count the frequency of the minimum absolute difference of the adjacent elements of the sorted elements of the given array. Follow the steps below to solve the problem:
- Sort the given array arr[].
- Compare all adjacent pairs in the sorted array and find the minimum absolute difference between all adjacent pairs.
- Finally, count all the adjacent pairs having difference equal to minimum difference.
Below is the implementation of the above approach:
C++
// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
// Function to return the count of all
// pairs having minimal absolute difference
int numberofpairs(int arr[], int N)
{
// Stores the count of pairs
int answer = 0;
// Sort the array
sort(arr, arr + N);
// Stores the minimum difference
// between adjacent pairs
int minDiff = INT_MAX;
for (int i = 0; i < N - 1; i++)
// Update the minimum
// difference between pairs
minDiff = min(minDiff,
arr[i + 1] - arr[i]);
for (int i = 0; i < N - 1; i++) {
if (arr[i + 1] - arr[i] == minDiff)
// Increase count of
// pairs with difference
// equal to that of
// minimum difference
answer++;
}
// Return the final count
return answer;
}
// Driver Code
int main()
{
// Given array arr[]
int arr[] = { 4, 2, 1, 3 };
int N = (sizeof arr) / (sizeof arr[0]);
// Function Call
cout << numberofpairs(arr, N) << "\n";
return 0;
}
Java
// Java program for the above
import java.util.Arrays;
class GFG{
// Function to return the count of all
// pairs having minimal absolute difference
static int numberofpairs(int []arr, int N)
{
// Stores the count of pairs
int answer = 0;
// Sort the array
Arrays.sort(arr);
// Stores the minimum difference
// between adjacent pairs
int minDiff = 10000000;
for (int i = 0; i < N - 1; i++)
// Update the minimum
// difference between pairs
minDiff = Math.min(minDiff,
arr[i + 1] - arr[i]);
for (int i = 0; i < N - 1; i++)
{
if (arr[i + 1] - arr[i] == minDiff)
// Increase count of
// pairs with difference
// equal to that of
// minimum difference
answer++;
}
// Return the final count
return answer;
}
// Driver Code
public static void main(String[] args)
{
// Given array arr[]
int arr[] = { 4, 2, 1, 3 };
int N = arr.length;
// Function Call
System.out.print(numberofpairs(arr, N));
}
}
// This code is contributed by rock_cool
Python3
# Python3 program to implement
# the above approach
# Function to return the count of all
# pairs having minimal absolute difference
def numberofpairs(arr, N):
# Stores the count of pairs
answer = 0
# Sort the array
arr.sort()
# Stores the minimum difference
# between adjacent pairs
minDiff = 10000000
for i in range(0, N - 1):
# Update the minimum
# difference between pairs
minDiff = min(minDiff,
arr[i + 1] - arr[i])
for i in range(0, N - 1):
if arr[i + 1] - arr[i] == minDiff:
# Increase count of pairs
# with difference equal to
# that of minimum difference
answer += 1
# Return the final count
return answer
# Driver code
if __name__ == '__main__':
# Given array arr[]
arr = [ 4, 2, 1, 3 ]
N = len(arr)
# Function call
print(numberofpairs(arr,N))
# This code is contributed by virusbuddah_
C#
// C# program for the above approach
using System;
class GFG{
// Function to return the count of all
// pairs having minimal absolute difference
static int numberofpairs(int []arr, int N)
{
// Stores the count of pairs
int answer = 0;
// Sort the array
Array.Sort(arr);
// Stores the minimum difference
// between adjacent pairs
int minDiff = 10000000;
for(int i = 0; i < N - 1; i++)
// Update the minimum
// difference between pairs
minDiff = Math.Min(minDiff,
arr[i + 1] -
arr[i]);
for(int i = 0; i < N - 1; i++)
{
if (arr[i + 1] - arr[i] == minDiff)
// Increase count of
// pairs with difference
// equal to that of
// minimum difference
answer++;
}
// Return the final count
return answer;
}
// Driver Code
public static void Main(String[] args)
{
// Given array arr[]
int []arr = { 4, 2, 1, 3 };
int N = arr.Length;
// Function Call
Console.Write(numberofpairs(arr, N));
}
}
// This code is contributed by shivanisinghss2110
JavaScript
<script>
// Javascript program for the above approach
// Function to return the count of all
// pairs having minimal absolute difference
function numberofpairs(arr, N)
{
// Stores the count of pairs
let answer = 0;
// Sort the array
arr.sort();
// Stores the minimum difference
// between adjacent pairs
let minDiff = Number.MAX_VALUE;
for (let i = 0; i < N - 1; i++)
// Update the minimum
// difference between pairs
minDiff = Math.min(minDiff,
arr[i + 1] - arr[i]);
for (let i = 0; i < N - 1; i++) {
if (arr[i + 1] - arr[i] == minDiff)
// Increase count of
// pairs with difference
// equal to that of
// minimum difference
answer++;
}
// Return the final count
return answer;
}
// Given array arr[]
let arr = [ 4, 2, 1, 3 ];
let N = arr.length;
// Function Call
document.write(numberofpairs(arr, N));
</script>
Time Complexity: O(N*log N)
Auxiliary Space: O(1)
Similar Reads
Find all pairs in an Array in sorted order with minimum absolute difference Given an integer array arr[] of size N, the task is to find all distinct pairs having minimum absolute difference and print them in ascending order. Examples:Input: arr[] = {4, 2, 1, 3}Output: {1, 2}, {2, 3}, {3, 4}Explanation: The minimum absolute difference between pairs is 1.Input: arr[] = {1, 3,
9 min read
Sum of minimum absolute differences in an array Given an array of n distinct integers. The task is to find the sum of minimum absolute difference of each array element. For an element arr[i] present at index i in the array, its minimum absolute difference is calculated as: Min absolute difference (arr[i]) = min(abs(arr[i] - arr[j])), where 0 <
7 min read
Absolute Difference of all pairwise consecutive elements in an array Given an array of integers of N elements. The task is to print the absolute difference of all of the pairwise consecutive elements. Pairwise consecutive pairs of an array of size N are (a[i], a[i+1]) for all i ranging from 0 to N-2 Examples: Input: arr[] = {8, 5, 4, 3, 15, 20}Output: 3, 1, 1, 12, 5I
4 min read
Count pairs in an array whose absolute difference is divisible by K Given an array arr[] and a positive integer K. The task is to count the total number of pairs in the array whose absolute difference is divisible by K. Examples: Input: arr[] = {1, 2, 3, 4}, K = 2 Output: 2 Explanation: Total 2 pairs exists in the array with absolute difference divisible by 2. The p
14 min read
Find maximum absolute difference with min sum of ratios in an Array Given an array of positive integers arr[], the task is to find the maximum absolute difference between the pairs from the array such that the sum of their ratios is minimum. Examples: Input: arr[] = {2, 6, 3, 4, 8, 9}Output: 4Explanation: In the above example, the ratios of every pair are calculated
7 min read