Dada una array binaria arr[] cof size N , la tarea es reducir la array a un solo elemento mediante las siguientes dos operaciones:
- Un triplete de 0 o 1 consecutivos permanece sin cambios.
- Un triplete de elementos de array consecutivos que consta de dos 0 y un solo 1 o viceversa se puede convertir en un elemento más frecuente.
Ejemplos:
Entrada: arr[] = {0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1}
Salida: No
Explicación: Las
siguientes son las operaciones realizadas en la array:
{0, 1, 1} -> 1 modifica la array a {1, 1, 1, 0, 0, 1, 1, 1, 1}
{1, 0, 0} -> 0 modifica la array a {1, 1, 0, 1, 1 , 1, 1}
{1, 0, 1} -> 1 modifica la array a {1, 1, 1, 1, 1}
Dado que todos los elementos restantes son 1, permanecen sin cambios.
Por lo tanto, la array no se puede reducir a un solo elemento.Entrada: arr[] = {1, 0, 0, 0, 1, 1, 1}
Salida: Sí
Explicación: Las
siguientes son las operaciones realizadas en la array:
{1, 0, 0} -> 0 {0, 0, 1, 1, 1}
{0, 0, 1} -> 0 {0, 1, 1}
{0, 1, 1} -> 1 {1}
Enfoque:
siga los pasos a continuación para resolver el problema:
- Cuente la frecuencia de 0 ‘s y 1 ‘s.
- Calcular la diferencia absoluta de sus respectivos conteos.
- Si la diferencia es 1, solo entonces la array se puede reducir a 1. Por lo tanto, imprima Sí.
- De lo contrario, imprima 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 it is possible to // reduce the array to a single element void solve(int arr[], int n) { // Stores frequency of 0's int countzeroes = 0; // Stores frequency of 1's int countones = 0; for (int i = 0; i < n; i++) { if (arr[i] == 0) countzeroes++; else countones++; } // Condition for array to be reduced if (abs(countzeroes - countones) == 1) cout << "Yes"; // Otherwise else cout << "No"; } // Driver Code int main() { int arr[] = { 0, 1, 0, 0, 1, 1, 1 }; int n = sizeof(arr) / sizeof(arr[0]); solve(arr, n); return 0; }
Java
// Java program to implement // the above approach class GFG{ // Function to check if it is possible to // reduce the array to a single element static void solve(int arr[], int n) { // Stores frequency of 0's int countzeroes = 0; // Stores frequency of 1's int countones = 0; for(int i = 0; i < n; i++) { if (arr[i] == 0) countzeroes++; else countones++; } // Condition for array to be reduced if (Math.abs(countzeroes - countones) == 1) System.out.print("Yes"); // Otherwise else System.out.print("No"); } // Driver Code public static void main(String[] args) { int arr[] = { 0, 1, 0, 0, 1, 1, 1 }; int n = arr.length; solve(arr, n); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program to implement # the above approach # Function to check if it is possible to # reduce the array to a single element def solve(arr, n): # Stores frequency of 0's countzeroes = 0; # Stores frequency of 1's countones = 0; for i in range(n): if (arr[i] == 0): countzeroes += 1; else: countones += 1; # Condition for array to be reduced if (abs(countzeroes - countones) == 1): print("Yes"); # Otherwise else: print("No"); # Driver Code if __name__ == '__main__': arr = [ 0, 1, 0, 0, 1, 1, 1 ]; n = len(arr); solve(arr, n); # This code is contributed by Amit Katiyar
C#
// C# program to implement // the above approach using System; class GFG{ // Function to check if it is possible to // reduce the array to a single element static void solve(int []arr, int n) { // Stores frequency of 0's int countzeroes = 0; // Stores frequency of 1's int countones = 0; for(int i = 0; i < n; i++) { if (arr[i] == 0) countzeroes++; else countones++; } // Condition for array to be reduced if (Math.Abs(countzeroes - countones) == 1) Console.Write("Yes"); // Otherwise else Console.Write("No"); } // Driver Code public static void Main(String[] args) { int []arr = { 0, 1, 0, 0, 1, 1, 1 }; int n = arr.Length; solve(arr, n); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript program to implement // the above approach // Function to check if it is possible to // reduce the array to a single element function solve(arr, n) { // Stores frequency of 0's var countzeroes = 0; // Stores frequency of 1's var countones = 0; for(var i = 0; i < n; i++) { if (arr[i] == 0) countzeroes++; else countones++; } // Condition for array to be reduced if (Math.abs(countzeroes - countones) == 1) document.write( "Yes"); // Otherwise else document.write( "No"); } // Driver Code var arr = [ 0, 1, 0, 0, 1, 1, 1 ]; var n = arr.length; solve(arr, n); // This code is contributed by rutvik_56 </script>
Yes
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por mishrapriyanshu557 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA