Dado un arreglo arr[] de elementos enteros, la tarea es encontrar la longitud del subarreglo más largo cuyo producto es 0 .
Ejemplos:
Entrada: arr[] = {1, 2, 3, 0, 1, 2, 0}
Salida: 7
{1, 2, 3, 0, 1, 2, 0} es el subarreglo más largo cuyo producto es 0.
Entrada: arr[] = {1, 2, 3, 4, 5}
Salida: 0
No hay subarreglo posible cuyo producto sea 0.
Acercarse:
- Si no hay ningún elemento en la array que sea igual a 0, entonces no habrá sub-array posible cuyo producto sea 0.
- Si hay al menos un elemento en el arreglo que es igual a 0, entonces el subarreglo más largo cuyo producto es 0 será el arreglo completo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the length of the // longest sub-array whose product // of elements is 0 int longestSubArray(int arr[], int n) { bool isZeroPresent = false; for (int i = 0; i < n; i++) { if (arr[i] == 0) { isZeroPresent = true; break; } } if (isZeroPresent) return n; return 0; } // Driver code int main() { int arr[] = { 1, 2, 3, 0, 1, 2, 0 }; int n = sizeof(arr) / sizeof(arr[0]); cout << longestSubArray(arr, n); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the length of the // longest sub-array whose product // of elements is 0 static int longestSubArray(int arr[], int n) { boolean isZeroPresent = false; for (int i = 0; i < n; i++) { if (arr[i] == 0) { isZeroPresent = true; break; } } if (isZeroPresent) return n; return 0; } // Driver code public static void main(String args[]) { int arr[] = { 1, 2, 3, 0, 1, 2, 0 }; int n = arr.length; System.out.print(longestSubArray(arr, n)); } }
Python3
# Python3 implementation of the approach # Function to return the length of # the longest sub-array whose product # of elements is 0 def longestSubArray(arr, n) : isZeroPresent = False for i in range (0 , n) : if (arr[i] == 0) : isZeroPresent = True break if (isZeroPresent) : return n return 0 # Driver code arr = [ 1, 2, 3, 0, 1, 2, 0 ] n = len(arr) print(longestSubArray(arr, n)) # This code is contributed by ihritik
C#
// C# implementation of the approach using System; class GFG { // Function to return the length of the // longest sub-array whose product // of elements is 0 static int longestSubArray(int[] arr, int n) { bool isZeroPresent = false; for (int i = 0; i < n; i++) { if (arr[i] == 0) { isZeroPresent = true; break; } } if (isZeroPresent) return n; return 0; } // Driver code public static void Main() { int[] arr = { 1, 2, 3, 0, 1, 2, 0 }; int n = arr.Length; Console.Write(longestSubArray(arr, n)); } }
PHP
<?php // PHP implementation of the approach // Function to return the length of the // longest sub-array whose product // of elements is 0 function longestSubArray($arr, $n) { $isZeroPresent = false; for ($i = 0; $i < $n; $i++) { if ($arr[$i] == 0) { $isZeroPresent = true; break; } } if ($isZeroPresent) return $n; return 0; } // Driver code $arr = array( 1, 2, 3, 0, 1, 2, 0 ); $n = sizeof($arr); echo longestSubArray($arr, $n); // This code is contributed by ihritik ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the length of the // longest sub-array whose product // of elements is 0 function longestSubArray(arr, n) { var isZeroPresent = false; for (var i = 0; i < n; i++) { if (arr[i] == 0) { isZeroPresent = true; break; } } if (isZeroPresent) return n; return 0; } // Driver code var arr = [ 1, 2, 3, 0, 1, 2, 0 ]; var n = arr.length; document.write(longestSubArray(arr, n)); // This code is contributed by rutvik_56. </script>
Producción:
7
Complejidad de tiempo: O(n), donde n representa el tamaño de la array dada.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.