Compruebe si una array contiene solo un elemento distinto

Dada una array arr[] de tamaño N , la tarea es verificar si la array contiene solo un elemento distinto o no. Si contiene solo un elemento distinto, imprima » Sí» , de lo contrario imprima » No» .

Ejemplos:

Entrada: arr[] = {3, 3, 4, 3, 3} 
Salida: No  
Explicación: 
Hay 2 elementos distintos presentes en la array {3, 4}. 
Por lo tanto, la salida es No.

Entrada: arr[] = {9, 9, 9, 9, 9, 9, 9} 
Salida: Sí 
Explicación: 
El único elemento distinto en la array es 9. 
Por lo tanto, la salida es Sí.

Enfoque ingenuo: la idea es ordenar la array dada y luego, para cada índice válido, verificar si el elemento actual y el siguiente elemento son iguales o no. Si no son iguales, significa que la array contiene más de un elemento distinto, por lo tanto, imprima » No» , de lo contrario, imprima » Sí» .

Complejidad de tiempo: O(N*logN) 
Espacio auxiliar: O(1)

Mejor enfoque: este problema se puede resolver utilizando una estructura de datos establecida . Ya que en conjunto, no se permiten repeticiones. A continuación se muestran los pasos:

  1. Inserta elementos de la array en el conjunto.
  2. Si solo hay un elemento distinto, el tamaño del conjunto después del paso 1 será 1, así que imprima «Sí» .
  3. De lo contrario, escriba “ No” .

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 if the array
// contains only one distinct element
void uniqueElement(int arr[],int n)
{
     
    // Create a set
    unordered_set<int> set;
     
    // Traversing the array
    for(int i = 0; i < n; i++)
    {
        set.insert(arr[i]);
    }
     
    // Compare and print the result
    if(set.size() == 1)
    {
        cout << "YES" << endl;
    }
    else
    {
        cout << "NO" << endl;
    }
}
 
// Driver code
int main()
{
    int arr[] = { 9, 9, 9, 9, 9, 9, 9 };
     
    int n = sizeof(arr) / sizeof(arr[0]);
     
    // Function call
    uniqueElement(arr,n);
    return 0;
}
 
// This code is contributed by rutvik_56

Java

// Java program for the above approach
import java.util.*;
 
public class Main {
 
    // Function to find if the array
    // contains only one distinct element
    public static void
    uniqueElement(int arr[])
    {
        // Create a set
        Set<Integer> set = new HashSet<>();
 
        // Traversing the array
        for (int i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
 
        // Compare and print the result
        if (set.size() == 1)
            System.out.println("Yes");
 
        else
            System.out.println("No");
    }
 
    // Driver Code
    public static void main(String args[])
    {
        int arr[] = { 9, 9, 9, 9, 9, 9, 9 };
 
        // Function call
        uniqueElement(arr);
    }
}

Python3

# Python3 program for the above approach
 
# Function to find if the array
# contains only one distinct element
def uniqueElement(arr, n):
     
    # Create a set
    s = set(arr)
     
    # Compare and print the result
    if(len(s) == 1):
        print('YES')
    else:
        print('NO')
 
# Driver code
if __name__=='__main__':
     
    arr = [ 9, 9, 9, 9, 9, 9, 9 ]
    n = len(arr)
     
    # Function call
    uniqueElement(arr, n)
     
# This code is contributed by rutvik_56

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
class GFG{
 
// Function to find if the array
// contains only one distinct element
public static void uniqueElement(int []arr)
{
     
    // Create a set
    HashSet<int> set = new HashSet<int>();
 
    // Traversing the array
    for(int i = 0; i < arr.Length; i++)
    {
        set.Add(arr[i]);
    }
 
    // Compare and print the result
    if (set.Count == 1)
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
}
 
// Driver Code
public static void Main(String []args)
{
    int []arr = { 9, 9, 9, 9, 9, 9, 9 };
 
    // Function call
    uniqueElement(arr);
}
}
 
// This code is contributed by Amit Katiyar

Javascript

<script>
 
// Javascript program for the above approach
 
// Function to find if the array
// contains only one distinct element
function uniqueElement(arr,n)
{
     
    // Create a set
    var set = new Set();
     
    // Traversing the array
    for(var i = 0; i < n; i++)
    {
        set.add(arr[i]);
    }
     
    // Compare and print the result
    if(set.size == 1)
    {
        document.write( "YES");
    }
    else
    {
        document.write( "NO");
    }
}
 
// Driver code
var arr = [9, 9, 9, 9, 9, 9, 9];
 
var n = arr.length;
 
// Function call
uniqueElement(arr,n);
 
// This code is contributed by itsok.
</script>
Producción: 

Yes

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

Enfoque eficiente: este problema también se puede resolver sin usar espacio adicional. A continuación se muestran los pasos:

  1. Suponga que el primer elemento de la array es el único elemento único en la array y almacene su valor en una variable, digamos X .
  2. Luego recorra la array y verifique si el elemento actual es igual a X o no.
  3. Si se encuentra que es cierto, siga verificando todos los elementos de la array. Si no se encuentra ningún elemento diferente de X , imprima «Sí».
  4. De lo contrario, si alguno de los elementos de la array no es igual a X , significa que la array contiene más de un elemento único. Por lo tanto, escriba «No» .

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 if the array
// contains only one distinct element
void uniqueElement(int arr[], int n)
{
  // Assume first element to
  // be the unique element
  int x = arr[0];
 
  int flag = 1;
 
  // Traversing the array
  for (int i = 0; i < n; i++)
  {
    // If current element is not
    // equal to X then break the
    // loop and print No
    if (arr[i] != x)
    {
      flag = 0;
      break;
    }
  }
 
  // Compare and print the result
  if (flag == 1)
    cout << "Yes";
  else
    cout << "No";
}
     
// Driver Code
int main()
{
  int arr[] = {9, 9, 9,
               9, 9, 9, 9};
  int n = sizeof(arr) /
          sizeof(arr[0]);
 
  // Function call
  uniqueElement(arr, n);
}
 
// This code is contributed by Chitranayal

Java

// Java program for the above approach
 
import java.util.*;
 
public class Main {
 
    // Function to find if the array
    // contains only one distinct element
    public static void
    uniqueElement(int arr[])
    {
        // Assume first element to
        // be the unique element
        int x = arr[0];
 
        int flag = 1;
 
        // Traversing the array
        for (int i = 0; i < arr.length; i++) {
 
            // If current element is not
            // equal to X then break the
            // loop and print No
            if (arr[i] != x) {
                flag = 0;
                break;
            }
        }
 
        // Compare and print the result
        if (flag == 1)
            System.out.println("Yes");
 
        else
            System.out.println("No");
    }
 
    // Driver Code
    public static void main(String args[])
    {
        int arr[] = { 9, 9, 9, 9, 9, 9, 9 };
 
        // Function call
        uniqueElement(arr);
    }
}

Python3

# Python3 program for the above approach
 
# Function to find if the array
# contains only one distinct element
def uniqueElement(arr):
 
    # Assume first element to
    # be the unique element
    x = arr[0]
 
    flag = 1
 
    # Traversing the array
    for i in range(len(arr)):
 
        # If current element is not
        # equal to X then break the
        # loop and print No
        if(arr[i] != x):
            flag = 0
            break
 
    # Compare and print the result
    if(flag == 1):
        print("Yes")
    else:
        print("No")
 
# Driver Code
 
# Given array arr[]
arr = [ 9, 9, 9, 9, 9, 9, 9 ]
 
# Function call
uniqueElement(arr)
 
# This code is contributed by Shivam Singh

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to find if the array
// contains only one distinct element
public static void uniqueElement(int []arr)
{
     
    // Assume first element to
    // be the unique element
    int x = arr[0];
 
    int flag = 1;
 
    // Traversing the array
    for(int i = 0; i < arr.Length; i++)
    {
         
        // If current element is not
        // equal to X then break the
        // loop and print No
        if (arr[i] != x)
        {
            flag = 0;
            break;
        }
    }
 
    // Compare and print the result
    if (flag == 1)
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
}
 
// Driver code
static public void Main ()
{
    int []arr = { 9, 9, 9, 9, 9, 9, 9 };
 
    // Function call
    uniqueElement(arr);
}
}
 
// This code is contributed by AnkitRai01

Javascript

<script>
    // javascript program for the above approach
 
  
  
// Function to find if the array
// contains only one distinct element
 
function uniqueElement(arr)
{
      
    // Assume first element to
    // be the unique element
    var x = arr[0];
  
    var flag = 1;
  
    // Traversing the array
    for(var i = 0; i < arr.length; i++)
    {
          
        // If current element is not
        // equal to X then break the
        // loop and print No
        if (arr[i] != x)
        {
            flag = 0;
            break;
        }
    }
  
    // Compare and print the result
    if (flag == 1)
        document.write("Yes");
    else
        document.write("No");
}
  
// Driver code
 
    var arr = [ 9, 9, 9, 9, 9, 9, 9 ];
  
    // Function call
    uniqueElement(arr);
 
  
 
</script>
Producción: 

Yes

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

Publicación traducida automáticamente

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