Dada una array arr[] y un entero positivo K . La tarea es contar el número total de pares en el arreglo cuya diferencia absoluta es divisible por K.
Ejemplos:
Entrada: arr[] = {1, 2, 3, 4}, K = 2
Salida: 2
Explicación: Hay
un total de 2 pares en la array con una diferencia absoluta divisible por 2.
Los pares son: (1, 3), (2 , 4).Entrada: arr[] = {3, 3, 3}, K = 3
Salida: 3
Explicación: Hay
un total de 3 pares en esta array con una diferencia absoluta divisible por 3.
Los pares son: (3, 3), (3, 3 ), (3, 3).
Enfoque ingenuo: la idea es verificar cada par de la array uno por uno y contar el número total de pares cuya diferencia absoluta es divisible por K.
C++
#include <bits/stdc++.h> using namespace std; // function to count pairs in an array // whose absolute difference is // divisible by k void countPairs(int arr[], int n, int k) { // initialize count as zero. int i, j, cnt = 0; // loop to count the valid pair for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if ((arr[i] - arr[j] + k) % k == 0) cnt += 1; } } cout << cnt << endl; } // Driver code int main() { // input array int arr[] = {3, 3, 3}; int k = 3; // calculate the size of array int n = sizeof(arr) / sizeof(arr[0]); // function to count the valid pair countPairs(arr, n, k); return 0; }
Java
import java.util.*; class GFG { // function to count pairs in an array // whose absolute difference is // divisible by k static void countPairs(int arr[], int n, int k) { // initialize count as zero. int i, j, cnt = 0; // loop to count the valid pair for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if ((arr[i] - arr[j] + k) % k == 0) cnt += 1; } } System.out.print(cnt +"\n"); } // Driver code public static void main(String[] args) { // input array int arr[] = {3, 3, 3}; int k = 3; // calculate the size of array int n = arr.length; // function to count the valid pair countPairs(arr, n, k); } } // This code is contributed by 29AjayKumar
Python3
# Python3 Code implementation of the above approach # function to count pairs in an array # whose absolute difference is # divisible by k def countPairs(arr, n, k) : # initialize count as zero. cnt = 0; # loop to count the valid pair for i in range(n - 1) : for j in range(i + 1, n) : if ((arr[i] - arr[j] + k) % k == 0) : cnt += 1; print(cnt) ; # Driver code if __name__ == "__main__" : # input array arr = [3, 3, 3]; k = 3; # calculate the size of array n = len(arr); # function to count the valid pair countPairs(arr, n, k); # This code is contributed by AnkitRai01
C#
using System; class GFG { // function to count pairs in an array // whose absolute difference is // divisible by k static void countPairs(int []arr, int n, int k) { // initialize count as zero. int i, j, cnt = 0; // loop to count the valid pair for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if ((arr[i] - arr[j] + k) % k == 0) cnt += 1; } } Console.Write(cnt +"\n"); } // Driver code public static void Main(String[] args) { // input array int []arr = {3, 3, 3}; int k = 3; // calculate the size of array int n = arr.Length; // function to count the valid pair countPairs(arr, n, k); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Function to count pairs in an array // whose absolute difference is // divisible by k function countPairs(arr, n, k) { // Initialize count as zero. var i, j, cnt = 0; // Loop to count the valid pair for(i = 0; i < n - 1; i++) { for(j = i + 1; j < n; j++) { if ((arr[i] - arr[j] + k) % k == 0) cnt += 1; } } document.write(cnt + "\n"); } // Driver code // Input array var arr = [ 3, 3, 3 ]; var k = 3; // Calculate the size of array var n = arr.length; // Function to count the valid pair countPairs(arr, n, k); // This code is contributed by umadevi9616 </script>
3
Complejidad de tiempo: O( N 2 )
Complejidad de espacio: O(1)
Enfoque eficiente:
Algoritmo:
- Convierta cada elemento (A[i]) de la array en ((A[i]+K)%K)
- Use la técnica hash para almacenar la cantidad de veces que (A[i]%K) ocurre en la array
- Ahora, si un elemento A[i] aparece x veces en la array, agregue x*(x-1)/2 (elegir 2 elementos cualquiera de x elementos) en el par de conteo donde 1<=i<=n .Esto se debe a que el valor de cada elemento de la array se encuentra entre 0 y K-1, por lo que la diferencia absoluta es divisible solo si el valor de ambos elementos de un par es igual
C++
// Write CPP code here #include <bits/stdc++.h> using namespace std; // function to Count pairs in an array whose // absolute difference is divisible by k void countPair(int arr[], int n, int k) { // initialize the count int cnt = 0; // making every element of arr in // range 0 to k - 1 for (int i = 0; i < n; i++) { arr[i] = (arr[i] + k) % k; } // create an array hash[] int hash[k] = { 0 }; // store to count of element of arr // in hash[] for (int i = 0; i < n; i++) { hash[arr[i]]++; } // count the pair whose absolute // difference is divisible by k for (int i = 0; i < k; i++) { cnt += (hash[i] * (hash[i] - 1)) / 2; } // print the value of count cout << cnt << endl; } // Driver Code int main() { // input array int arr[] = {1, 2, 3, 4}; int k = 2; // calculate the size of array int n = sizeof(arr) / sizeof(arr[0]); countPair(arr, n, k); return 0; }
Java
// JAVA Implementation of above approach import java.util.*; class GFG { // function to Count pairs in an array whose // absolute difference is divisible by k static void countPair(int arr[], int n, int k) { // initialize the count int cnt = 0; // making every element of arr in // range 0 to k - 1 for (int i = 0; i < n; i++) { arr[i] = (arr[i] + k) % k; } // create an array hash[] int hash[] = new int[k]; // store to count of element of arr // in hash[] for (int i = 0; i < n; i++) { hash[arr[i]]++; } // count the pair whose absolute // difference is divisible by k for (int i = 0; i < k; i++) { cnt += (hash[i] * (hash[i] - 1)) / 2; } // print the value of count System.out.print(cnt +"\n"); } // Driver Code public static void main(String[] args) { // input array int arr[] = {1, 2, 3, 4}; int k = 2; // calculate the size of array int n = arr.length; countPair(arr, n, k); } } // This code is contributed by PrinciRaj1992
Python3
# Python3 Implementation of above approach # function to Count pairs in an array whose # absolute difference is divisible by k def countPair(arr, n, k): # initialize the count cnt = 0; # making every element of arr in # range 0 to k - 1 for i in range(n): arr[i] = (arr[i] + k) % k; # create an array hash hash = [0]*k; # store to count of element of arr # in hash for i in range(n): hash[arr[i]] += 1; # count the pair whose absolute # difference is divisible by k for i in range(k): cnt += (hash[i] * (hash[i] - 1)) / 2; # print value of count print(int(cnt)); # Driver Code if __name__ == '__main__': # input array arr = [1, 2, 3, 4]; k = 2; # calculate the size of array n = len(arr); countPair(arr, n, k); # This code is contributed by 29AjayKumar
C#
// C# Implementation of above approach using System; class GFG { // function to Count pairs in an array whose // absolute difference is divisible by k static void countPair(int []arr, int n, int k) { // initialize the count int cnt = 0; // making every element of arr in // range 0 to k - 1 for (int i = 0; i < n; i++) { arr[i] = (arr[i] + k) % k; } // create an array hash[] int []hash = new int[k]; // store to count of element of arr // in hash[] for (int i = 0; i < n; i++) { hash[arr[i]]++; } // count the pair whose absolute // difference is divisible by k for (int i = 0; i < k; i++) { cnt += (hash[i] * (hash[i] - 1)) / 2; } // print the value of count Console.Write(cnt +"\n"); } // Driver Code public static void Main(String[] args) { // input array int []arr = {1, 2, 3, 4}; int k = 2; // calculate the size of array int n = arr.Length; countPair(arr, n, k); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript Implementation of above approach // function to Count pairs in an array whose // absolute difference is divisible by k function countPair(arr, n, k) { // let initialize the count let cnt = 0; // making every element of arr in // range 0 to k - 1 for (let i = 0; i < n; i++) { arr[i] = (arr[i] + k) % k; } // create an array hash[] let hash = Array.from({length: k}, (_, i) => 0); // store to count of element of arr // in hash[] for (let i = 0; i < n; i++) { hash[arr[i]]++; } // count the pair whose absolute // difference is divisible by k for (let i = 0; i < k; i++) { cnt += (hash[i] * (hash[i] - 1)) / 2; } // print the value of count document.write(cnt +"<br/>"); } // Driver code // input array let arr = [1, 2, 3, 4]; let k = 2; // calculate the size of array let n = arr.length; countPair(arr, n, k); </script>
2
Complejidad Temporal: O( n+k )
Espacio Auxiliar: O( k )