Compruebe si todos los elementos de una array circular se pueden igualar mediante incrementos de pares adyacentes

Dada una array circular arr[] de tamaño N, la tarea es verificar si es posible igualar todos los elementos de la array circular aumentando los pares de elementos adyacentes en 1 .

Ejemplos:

Entrada: N = 4, arr[] = {2, 1, 3, 4} 
Salida:
Explicación:
Paso 1: { 2, 1 , 3, 4} -> { 3, 2 , 3, 4}
Paso 2: { 3, 2 , 3, 4} -> { 4, 3 , 3, 4}
Paso 3: {4, 3, 3 , 4} -> {4, 4, 4 , 4} 
Entrada: N = 6, arr []={1, 5, 9, 6, 1, 1} 
Salida: No

Planteamiento: Para resolver el problema, se puede observar que los dos índices formados por elementos a incrementar, uno es par y el otro es impar . Por lo tanto, si aumentamos el valor de un elemento indexado par, en consecuencia también aumentará un elemento indexado impar. Por lo tanto, todos los elementos de la array pueden hacerse iguales solo si la suma de los elementos indexados impares y los elementos indexados pares son iguales. Siga los pasos a continuación para resolver el problema:

  1. Calcule la suma de todos los números pares indexados, es decir, sumEven .
  2. Calcula la suma de todos los números indexados impares, es decir sumOdd .
  3. Si se encuentra que sumEven y sumOdd son iguales, entonces imprima » «, de lo contrario, » No «.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ Program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if all array
// elements can be made equal
bool checkEquall(int arr[], int N)
{
    // Stores the sum of even and
    // odd array elements
    int sumEven = 0, sumOdd = 0;
    for (int i = 0; i < N; i++) {
 
        // If index is odd
        if (i & 1)
            sumOdd += arr[i];
        else
            sumEven += arr[i];
    }
 
    if (sumEven == sumOdd)
        return true;
    else
        return false;
}
 
// Driver Code
int main()
{
 
    int arr[] = { 2, 7, 3, 5, 7 };
    int N = sizeof(arr) / sizeof(arr[0]);
    if (checkEquall(arr, N))
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}

Java

// Java program to implement
// the above approach
import java.util.*;
 
class GFG{
 
// Function to check if all array
// elements can be made equal
static boolean checkEquall(int arr[], int N)
{
     
    // Stores the sum of even and
    // odd array elements
    int sumEven = 0, sumOdd = 0;
     
    for(int i = 0; i < N; i++)
    {
         
        // If index is odd
        if (i % 2 == 1)
            sumOdd += arr[i];
        else
            sumEven += arr[i];
    }
 
    if (sumEven == sumOdd)
        return true;
    else
        return false;
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = { 2, 7, 3, 5, 7 };
    int N = arr.length;
     
    if (checkEquall(arr, N))
        System.out.print("YES" + "\n");
    else
        System.out.print("NO" + "\n");
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 program to implement
# the above approach
 
# Function to check if all array
# elements can be made equal
def checkEquall(arr, N):
 
    # Stores the sum of even and
    # odd array elements
    sumEven, sumOdd = 0, 0
     
    for i in range(N):
 
        # If index is odd
        if (i & 1):
            sumOdd += arr[i]
        else:
            sumEven += arr[i]
     
    if (sumEven == sumOdd):
        return True
    else:
        return False
 
# Driver Code
if __name__ == "__main__":
 
    arr = [ 2, 7, 3, 5, 7 ]
    N = len(arr)
     
    if (checkEquall(arr, N)):
        print("YES")
    else:
        print("NO")
 
# This code is contributed by chitranayal

C#

// C# program to implement
// the above approach
using System;
class GFG{
 
// Function to check if all array
// elements can be made equal
static bool checkEquall(int []arr, int N)
{
     
    // Stores the sum of even and
    // odd array elements
    int sumEven = 0, sumOdd = 0;
     
    for(int i = 0; i < N; i++)
    {
         
        // If index is odd
        if (i % 2 == 1)
            sumOdd += arr[i];
        else
            sumEven += arr[i];
    }
 
    if (sumEven == sumOdd)
        return true;
    else
        return false;
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = { 2, 7, 3, 5, 7 };
    int N = arr.Length;
     
    if (checkEquall(arr, N))
        Console.Write("YES" + "\n");
    else
        Console.Write("NO" + "\n");
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
 
// JavaScript program to implement
// the above approach
 
// Function to check if all array
// elements can be made equal
function checkEquall(arr, N)
{
      
    // Stores the sum of even and
    // odd array elements
    let sumEven = 0, sumOdd = 0;
      
    for(let i = 0; i < N; i++)
    {
          
        // If index is odd
        if (i % 2 == 1)
            sumOdd += arr[i];
        else
            sumEven += arr[i];
    }
  
    if (sumEven == sumOdd)
        return true;
    else
        return false;
}
 
// Driver Code
 
    let arr = [ 2, 7, 3, 5, 7 ];
    let N = arr.length;
      
    if (checkEquall(arr, N))
        document.write("YES" );
    else
        document.write("NO");
                      
</script>
Producción: 

YES

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por shashanktrivedi02 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *