Dada una array arr[] que consta de N elementos, la tarea es encontrar la longitud del subarreglo más largo con un producto impar .
Ejemplos:
Entrada: array[] = {3, 5, 2, 1}
Salida: 2
Explicación:
Los subarreglos con elementos impares consecutivos son {3, 5} y {1}.
Como {3, 5} es el más largo, la respuesta es 2.
Entrada: arr[] = {8, 5, 3, 1, 0}
Salida: 3
Explicación:
el subarreglo más largo con producto impar es {5, 3, 1 }.
Enfoque:
Se requieren las siguientes observaciones para resolver el problema:
El Producto de dos números impares genera un número impar.
El Producto de un número impar y uno par genera un número par.
El Producto de dos números pares genera un número par.
De las observaciones anteriores, podemos concluir que el subarreglo más largo de elementos impares consecutivos en el arreglo es la respuesta requerida.
Siga los pasos a continuación para resolver el problema:
- Recorra la array y verifique si el elemento actual es par o impar.
- Si el elemento actual es impar, establezca la cuenta en 1 y siga aumentando la cuenta hasta que se encuentre un elemento par en la array.
- Una vez que se encuentra un elemento par, compare el conteo con ans y actualice y almacene el máximo de los dos.
- Repita los pasos anteriores para la array restante.
- Finalmente, imprima el valor almacenado en ans .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program to find the longest // subarray with odd product #include <bits/stdc++.h> using namespace std; // Function to return length of // longest subarray with odd product int Maxlen(int arr[], int n) { int ans = 0; int count = 0; for (int i = 0; i < n; i++) { // If even element // is encountered if (arr[i] % 2 == 0) count = 0; else count++; // Update maximum ans = max(ans, count); } return ans; } // Driver Code int main() { // int arr[] = { 6, 3, 5, 1 }; int arr[] = { 1, 7, 2 }; int n = sizeof(arr) / sizeof(int); cout << Maxlen(arr, n) << endl; return 0; }
Java
// Java program to find the longest // subarray with odd product import java.util.*; class GFG{ // Function to return length of // longest subarray with odd product static int Maxlen(int arr[], int n) { int ans = 0; int count = 0; for(int i = 0; i < n; i++) { // If even element // is encountered if (arr[i] % 2 == 0) count = 0; else count++; // Update maximum ans = Math.max(ans, count); } return ans; } // Driver Code public static void main(String s[]) { int arr[] = { 1, 7, 2 }; int n = arr.length; System.out.println(Maxlen(arr, n)); } } // This code is contributed by rutvik_56
Python3
# Python3 program to find the longest # subarray with odd product # Function to return length of # longest subarray with odd product def Maxlen(a, n): ans = 0 count = 0 for i in range(n): # If even element # is encountered if a[i] % 2 == 0: count = 0 else: count += 1 # Update maximum ans = max(ans, count) return ans # Driver code arr = [ 1, 7, 2 ] n = len(arr) print(Maxlen(arr, n)) # This code is contributed by amreshkumar3
C#
// C# program to find the longest // subarray with odd product using System; class GFG{ // Function to return length of // longest subarray with odd product static int Maxlen(int []arr, int n) { int ans = 0; int count = 0; for(int i = 0; i < n; i++) { // If even element // is encountered if (arr[i] % 2 == 0) count = 0; else count++; // Update maximum ans = Math.Max(ans, count); } return ans; } // Driver Code public static void Main() { int []arr = { 1, 7, 2 }; int n = arr.Length; Console.WriteLine(Maxlen(arr, n)); } } // This code is contributed by amreshkumar3
Javascript
<script> // Javascript program to find the longest // subarray with odd product // Function to return length of // longest subarray with odd product function Maxlen(arr, n) { let ans = 0; let count = 0; for(let i = 0; i < n; i++) { // If even element // is encountered if (arr[i] % 2 == 0) count = 0; else count++; // Update maximum ans = Math.max(ans, count); } return ans; } // Driver Code let arr = [ 1, 7, 2 ]; let n = arr.length; document.write(Maxlen(arr, n)); </script>
2
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por patelnagendra1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA