Pairs with Difference less than K - GeeksforGeeks

18 May, 2021
Given an array of n integers, We need to find all pairs with difference less than k
Examples :  
Input : a[] = {1, 10, 4, 2}
        K = 3
Output : 2
We can make only two pairs 
with difference less than 3.
(1, 2) and (4, 2)

Input : a[] = {1, 8, 7}
        K = 7
Output : 2
Pairs with difference less than 7
are (1, 7) and (8, 7)
Method 1 (Simple) : Run two nested loops. The outer loop picks every element x one by one. The inner loop considers all elements after x and checks if difference is within limits or not.  
C++
Java
Python3
C#
PHP
Javascript
// CPP code to find count of Pairs with// difference less than K.#include <bits/stdc++.h>using namespace std; int countPairs(int a[], int n, int k){    int res = 0;    for (int i = 0; i < n; i++)      for (int j=i+1; j<n; j++)         if (abs(a[j] - a[i]) < k)            res++;     return res;} // Driver codeint main(){    int a[] =  {1, 10, 4, 2};    int k = 3;    int n = sizeof(a) / sizeof(a[0]);    cout << countPairs(a, n, k) << endl;    return 0;}
// java code to find count of Pairs with// difference less than K.import java.io.*; class GFG {    static int countPairs(int a[], int n, int k)    {        int res = 0;        for (int i = 0; i < n; i++)        for (int j = i + 1; j < n; j++)            if (Math.abs(a[j] - a[i]) < k)                res++;             return res;    }         // Driver code    public static void main (String[] args)    {        int a[] = {1, 10, 4, 2};        int k = 3;        int n = a.length;        System.out.println(countPairs(a, n, k));             }} // This code is contributed by vt_m.
# Python3 code to find count of Pairs # with difference less than K. def countPairs(a, n, k):    res = 0    for i in range(n):        for j in range(i + 1, n):            if (abs(a[j] - a[i]) < k):                res += 1     return res     # Driver codea = [1, 10, 4, 2]k = 3n = len(a)print(countPairs(a, n, k), end = "") # This code is contributed by Azkia Anam.
// C# code to find count of Pairs//  with difference less than K.using System; class GFG {         // Function to count pairs    static int countPairs(int []a, int n,                          int k)    {        int res = 0;        for (int i = 0; i < n; i++)        for (int j = i + 1; j < n; j++)            if (Math.Abs(a[j] - a[i]) < k)                res++;             return res;    }         // Driver code    public static void Main ()    {        int []a = {1, 10, 4, 2};        int k = 3;        int n = a.Length;        Console.WriteLine(countPairs(a, n, k));             }} // This code is contributed by vt_m.
<?php// PHP code to find count of Pairs// with difference less than K. function countPairs( $a, $n, $k){    $res = 0;    for($i = 0; $i < $n; $i++)    for($j = $i + 1; $j < $n; $j++)        if (abs($a[$j] - $a[$i]) < $k)            $res++;     return $res;}     // Driver code    $a = array(1, 10, 4, 2);    $k = 3;    $n = count($a);    echo countPairs($a, $n, $k); // This code is contributed by anuj_67.?>
<script> // Javascript code to find count of Pairs// with difference less than K.function countPairs(a, n, k){    var res = 0;    for(var i = 0; i < n; i++)        for(var j = i + 1; j < n; j++)            if (Math.abs(a[j] - a[i]) < k)                res++;                     return res;} // Driver codevar a = [ 1, 10, 4, 2 ];var k = 3;var n = a.length; document.write(countPairs(a, n, k)); // This code is contributed by bunnyram19         </script>
Output : 
  2
Time Complexity : O(n2) Auxiliary Space : O(1)
Method 2 (Sorting) : First we sort the array. Then we start from first element and keep considering pairs while difference is less than k. If we stop the loop when we find difference more than or equal to k and move to next element.  
C++
Java
Python3
C#
PHP
Javascript
// C++ code to find count of Pairs with// difference less than K.#include <bits/stdc++.h>using namespace std; int countPairs(int a[], int n, int k){    // to sort the array.    sort(a, a + n);     int res = 0;    for (int i = 0; i < n; i++) {         // Keep incrementing result while        // subsequent elements are within        // limits.        int j = i+1;        while (j < n && a[j] - a[i] < k) {            res++;            j++;        }    }    return res;} // Driver codeint main(){    int a[] =  {1, 10, 4, 2};    int k = 3;    int n = sizeof(a) / sizeof(a[0]);    cout << countPairs(a, n, k) << endl;    return 0;}
// Java code to find count of Pairs with// difference less than K.import java.io.*;import java.util.Arrays; class GFG{    static int countPairs(int a[], int n, int k)    {        // to sort the array.        Arrays.sort(a);             int res = 0;        for (int i = 0; i < n; i++)        {                 // Keep incrementing result while            // subsequent elements are within            // limits.            int j = i + 1;            while (j < n && a[j] - a[i] < k)            {                res++;                j++;            }        }        return res;    }         // Driver code    public static void main (String[] args)    {        int a[] = {1, 10, 4, 2};        int k = 3;        int n = a.length;        System.out.println(countPairs(a, n, k));    }} // This code is contributed by vt_m.
# Python code to find count of Pairs # with difference less than K. def countPairs(a, n, k):         # to sort the array    a.sort()    res = 0    for i in range(n):                 # Keep incrementing result while        # subsequent elements are within limits.        j = i+1        while (j < n and a[j] - a[i] < k):            res += 1            j += 1    return res # Driver codea = [1, 10, 4, 2]k = 3n = len(a)print(countPairs(a, n, k), end = "") # This code is contributed by Azkia Anam.
// C# code to find count of Pairs// with difference less than K.using System; class GFG {         // Function to count pairs    static int countPairs(int []a, int n,                          int k)    {                 // to sort the array.        Array.Sort(a);             int res = 0;        for (int i = 0; i < n; i++)        {                 // Keep incrementing result while            // subsequent elements are within            // limits.            int j = i + 1;            while (j < n && a[j] - a[i] < k)            {                res++;                j++;            }        }        return res;    }         // Driver code    public static void Main ()    {        int []a = {1, 10, 4, 2};        int k = 3;        int n = a.Length;        Console.WriteLine(countPairs(a, n, k));    }} // This code is contributed by vt_m.
<?php// PHP code to find count of// Pairs with difference less than K. function countPairs( $a, $n, $k){    // to sort the array.    sort($a);     $res = 0;    for ( $i = 0; $i < $n; $i++)    {         // Keep incrementing result        // while subsequent elements        // are within limits.        $j = $i + 1;        while ($j < $n and               $a[$j] - $a[$i] < $k)        {            $res++;            $j++;        }    }    return $res;} // Driver code$a = array(1, 10, 4, 2);$k = 3;$n = count($a);echo countPairs($a, $n, $k); // This code is contributed by anuj_67.?>
<script> // JavaScript code to find count of Pairs with// difference less than K.function countPairs(a, n, k){         // To sort the array.    a.sort((a, b) => a - b);     let res = 0;    for(let i = 0; i < n; i++)    {                 // Keep incrementing result while        // subsequent elements are within        // limits.        let j = i + 1;        while (j < n && a[j] - a[i] < k)        {            res++;            j++;        }    }    return res;} // Driver codelet a = [ 1, 10, 4, 2 ];let k = 3;let n = a.length; document.write(countPairs(a, n, k) + "<br>"); // This code is contributed by Surbhi Tyagi. </script>
Output : 
  2
Time complexity : O(res) where res is number of pairs in output. Note that in worst case this also takes O(n2) time but works much better in general.
This article is contributed by Harsha Mogali. If you like GeeksforGeeks and write.geeksforgeeks.org”>write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
vt_m
bunnyram19
surbhityagi15
Arrays
Sorting
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Window Sliding Technique
Program to find sum of elements in a given array
Find duplicates in O(n) time and O(1) extra space | Set 1
Reversal algorithm for array rotation
Next Greater Element