Dada una array arr[] de N enteros, la tarea es encontrar el número de pares de elementos adyacentes cuya suma es par donde cada elemento puede pertenecer a un par como máximo.
Ejemplo:
Entrada: arr[] = {1, 12, 1, 3, 5}
Salida: 1
Explicación: Se puede formar 1 par con arr[3] y arr[4].Entrada: arr[] = {1, 2, 3, 4, 5, 6, 8, 9}
Salida: 0
Enfoque: el problema dado se puede resolver utilizando un enfoque codicioso . Se puede observar que los pares requeridos pueden estar formados por los elementos que tienen la misma paridad solamente, es decir, ya sea (impar, impar) o (par, par). Además, el número de pares que se pueden formar a partir de X pares o impares consecutivos es piso (X/2) . Por lo tanto, recorra la array dada y calcule todos los conjuntos posibles de enteros consecutivos y agregue (X / 2) para cada conjunto en la respuesta.
A continuación se muestra la implementación del enfoque anterior:
C++
// c++ program for the above approach #include <bits/stdc++.h> using namespace std; // function to find maximum count of pairs of adjacent // elements with even sum in the given array int find_maximum_pairs(vector<int>& arr) { // total number of pairs is initially 0 int totalPairs = 0; for (int i = 0; i < arr.size() - 1; i++) { // If current pair is even-even or odd-odd if ((arr[i] + arr[i + 1]) % 2 == 0) { totalPairs++; i++; } } // return answer return totalPairs; } // Driver Code int main() { vector<int> arr = { 1, 12, 1, 3, 5 }; cout << find_maximum_pairs(arr) << endl; }
Java
// Java program for the above approach import java.io.*; class GFG { // Function to find maximum count of // pairs of adjacent elements with even // sum in the given array public static int findMaximumPairs(int[] arr) { // Total number of pairs is initially 0 int totalPairs = 0; for (int i = 0; i < arr.length - 1; i++) { // If current pair is even-even // or odd-odd if ((arr[i] + arr[i + 1]) % 2 == 0) { totalPairs++; i++; } } // Return Answer return totalPairs; } // Driver Code public static void main(String[] args) { int arr[] = { 1, 12, 1, 3, 5 }; System.out.println( findMaximumPairs(arr)); } }
Python3
# Python program for the above approach # function to find maximum count of pairs of adjacent # elements with even sum in the given array def find_maximum_pairs(arr): # total number of pairs is initially 0 totalPairs = 0 i = 0 while i < (len(arr)-1): # If current pair is even-even or odd-odd if ((arr[i] + arr[i + 1]) % 2 == 0): totalPairs += 1 i += 1 i += 1 # return answer return totalPairs # Driver Code arr = [1, 12, 1, 3, 5] print(find_maximum_pairs(arr)) # This code is contributed by Shubham Singh
C#
// C# program for the above approach using System; class GFG { // Function to find maximum count of // pairs of adjacent elements with even // sum in the given array public static int findMaximumPairs(int[] arr) { // Total number of pairs is initially 0 int totalPairs = 0; for (int i = 0; i < arr.Length - 1; i++) { // If current pair is even-even // or odd-odd if ((arr[i] + arr[i + 1]) % 2 == 0) { totalPairs++; i++; } } // Return Answer return totalPairs; } // Driver Code public static void Main() { int[] arr = { 1, 12, 1, 3, 5 }; Console.Write(findMaximumPairs(arr)); } } // This code is contributed by gfgking.
Javascript
<script> // JavaScript code for the above approach // Function to find maximum count of // pairs of adjacent elements with even // sum in the given array function findMaximumPairs(arr) { // Total number of pairs is initially 0 let totalPairs = 0; for (let i = 0; i < arr.length - 1; i++) { // If current pair is even-even // or odd-odd if ((arr[i] + arr[i + 1]) % 2 == 0) { totalPairs++; i++; } } // Return Answer return totalPairs; } // Driver Code let arr = [1, 12, 1, 3, 5]; document.write( findMaximumPairs(arr)); // This code is contributed by Potta Lokesh </script>
1
Complejidad temporal: O(N)
Espacio auxiliar: O(1)