Count of all pairs in an Array with minimum absolute difference
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++
#include <bits/stdc++.h>
using namespace std;
int numberofpairs( int arr[], int N)
{
int answer = 0;
sort(arr, arr + N);
int minDiff = INT_MAX;
for ( int i = 0; i < N - 1; i++)
minDiff = min(minDiff,
arr[i + 1] - arr[i]);
for ( int i = 0; i < N - 1; i++) {
if (arr[i + 1] - arr[i] == minDiff)
answer++;
}
return answer;
}
int main()
{
int arr[] = { 4, 2, 1, 3 };
int N = ( sizeof arr) / ( sizeof arr[0]);
cout << numberofpairs(arr, N) << "\n" ;
return 0;
}
|
Java
import java.util.Arrays;
class GFG{
static int numberofpairs( int []arr, int N)
{
int answer = 0 ;
Arrays.sort(arr);
int minDiff = 10000000 ;
for ( int i = 0 ; i < N - 1 ; i++)
minDiff = Math.min(minDiff,
arr[i + 1 ] - arr[i]);
for ( int i = 0 ; i < N - 1 ; i++)
{
if (arr[i + 1 ] - arr[i] == minDiff)
answer++;
}
return answer;
}
public static void main(String[] args)
{
int arr[] = { 4 , 2 , 1 , 3 };
int N = arr.length;
System.out.print(numberofpairs(arr, N));
}
}
|
Python3
def numberofpairs(arr, N):
answer = 0
arr.sort()
minDiff = 10000000
for i in range ( 0 , N - 1 ):
minDiff = min (minDiff,
arr[i + 1 ] - arr[i])
for i in range ( 0 , N - 1 ):
if arr[i + 1 ] - arr[i] = = minDiff:
answer + = 1
return answer
if __name__ = = '__main__' :
arr = [ 4 , 2 , 1 , 3 ]
N = len (arr)
print (numberofpairs(arr,N))
|
C#
using System;
class GFG{
static int numberofpairs( int []arr, int N)
{
int answer = 0;
Array.Sort(arr);
int minDiff = 10000000;
for ( int i = 0; i < N - 1; i++)
minDiff = Math.Min(minDiff,
arr[i + 1] -
arr[i]);
for ( int i = 0; i < N - 1; i++)
{
if (arr[i + 1] - arr[i] == minDiff)
answer++;
}
return answer;
}
public static void Main(String[] args)
{
int []arr = { 4, 2, 1, 3 };
int N = arr.Length;
Console.Write(numberofpairs(arr, N));
}
}
|
Javascript
<script>
function numberofpairs(arr, N)
{
let answer = 0;
arr.sort();
let minDiff = Number.MAX_VALUE;
for (let i = 0; i < N - 1; i++)
minDiff = Math.min(minDiff,
arr[i + 1] - arr[i]);
for (let i = 0; i < N - 1; i++) {
if (arr[i + 1] - arr[i] == minDiff)
answer++;
}
return answer;
}
let arr = [ 4, 2, 1, 3 ];
let N = arr.length;
document.write(numberofpairs(arr, N));
</script>
|
Time Complexity: O(N*log N)
Auxiliary Space: O(1)
Last Updated :
01 Apr, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...