Verifique la presencia de un número entero entre el mínimo y el máximo de Array que divide todos los elementos de Array

Dada una array A[] de tamaño N , la tarea es verificar si existe algún número entero que divida todos los elementos de esa array y se encuentre en el rango de elementos mínimos y máximos (ambos incluidos) de esa array.

Ejemplos:

Entrada: A = {27, 6, 9, 3, 21}
Salida: 1
Explicación: Aquí, 3 se encuentra entre min(3) y max(27) de esta array  
y divide todos los elementos de esta array.

Entrada: A = {4, 7, 12, 13, 20}
Salida: 0
Explicación: Ningún número entre 4 y 20 (ambos incluidos) divide 
todos los elementos de la array.

Acercarse:

 La idea es simplemente verificar todos los números posibles entre el elemento mínimo y máximo de la array, ya sea que alguno de ellos divida todos los elementos de esa array o no.

Siga los pasos a continuación para implementar esta idea:

  • Use dos bucles anidados, uno es del elemento mínimo al elemento máximo y otro es para verificar si divide todos los números o no.
  • En el ciclo anidado, inicialice el conteo a 0 e incremente el conteo cada vez que divida el valor.
  • Si en cualquier iteración el conteo se vuelve igual a N, entonces devuelve verdadero.
  • De lo contrario, si no se encuentra dicho elemento, devuelve falso.

A continuación se muestra la implementación de este enfoque:

C++

// C++ code to implement above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check whether a number exist
// or not that lies between min and max element
// and divides all the elements in the array
bool solve(int arr[], int n)
{
    int mini = *min_element(arr, arr + n);
    int maxi = *max_element(arr, arr + n);
    int count = 0;
    for (int i = mini; i <= maxi; i++) {
        for (int j = 0; j < n; j++) {
            if (arr[j] % i == 0)
                count++;
        }
        if (count == n)
            return true;
        count = 0;
    }
    return false;
}
 
// Driver code
int main()
{
    int A[] = { 27, 6, 9, 3, 21 };
 
    // Function call
    int N = sizeof(A) / sizeof(A[0]);
    if (solve(A, N))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

Javascript

// Javascript code to implement above approach
 
<script>
// Function to check whether a number exist
// or not that lies between min and max element
// and divides all the elements in the array
function solve(arr,n)
{
    let mini = Math.min.apply(null, arr);
    let maxi = Math.max.apply(null, arr);
    let count = 0;
    for (let i = mini; i <= maxi; i++) {
        for (let j = 0; j < n; j++) {
            if (arr[j] % i == 0)
                count++;
        }
        if (count == n)
            return true;
        count = 0;
    }
    return false;
}
 
// Driver code
 
     let A = [ 27, 6, 9, 3, 21 ];
 
    // Function call
    let N = A.length;
    if (solve(A, N))
        document.write("Yes");
    else
        document.write("No");
         
        // This code is contributed by satwik4409.
    </script>
Producción

Yes

Complejidad de tiempo: O(d * N), donde d = max_element – ​​min_element
Complejidad de espacio: O(1)

Publicación traducida automáticamente

Artículo escrito por heyy2001 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 *