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:
- Inserta elementos de la array en el conjunto.
- Si solo hay un elemento distinto, el tamaño del conjunto después del paso 1 será 1, así que imprima «Sí» .
- 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>
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:
- 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 .
- Luego recorra la array y verifique si el elemento actual es igual a X o no.
- 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í».
- 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>
Yes
Complejidad temporal: O(N)
Espacio auxiliar: O(1)