Dada una array arr[] de enteros completamente positivos o enteros completamente negativos excepto por un número. La tarea es encontrar ese número.
Ejemplos :
Entrada : arr[] = {3, 5, 2, 8, -7, 6, 9}
Salida : -7
Explicación: Excepto -7, todos los números en arr[] son enteros positivos.Entrada : arr[] = {-3, 5, -9}
Salida : 5
Enfoque : el problema dado se puede resolver simplemente comparando los tres primeros números de arr[]. Después de eso, aplique la búsqueda lineal y encuentre el número. Siga los pasos a continuación para resolver el problema.
- Si el tamaño de arr[] es menor que 3 , devuelva 0 .
- Inicialice las variables Cp y Cn .
- Donde Cp = Conteo de enteros positivos y Cn = Conteo de enteros negativos .
- Iterar sobre los primeros 3 elementos
- Si (arr[i]>0) , Incremente Cp en 1 .
- De lo contrario Incremente Cn en 1 .
- Cp puede ser 2 o 3 y, de manera similar, Cn también puede ser 2 o 3 .
- Si Cp<Cn , entonces el único elemento es positivo, aplique la búsqueda lineal y encuéntrelo.
- Si Cn<Cp , entonces el único elemento es negativo, aplique la búsqueda lineal y encuéntrelo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <iostream> using namespace std; // Function to return the single element int find(int* a, int N) { // Size can not be smaller than 3 if (N < 3) return 0; // Initialize the variable int i, Cp = 0, Cn = 0; // Check the single element is // positive or negative for (i = 0; i < 3; i++) { if (a[i] > 0) Cp++; else Cn++; } // Check for positive single element if (Cp < Cn) { for (i = 0; i < N; i++) if (a[i] > 0) return a[i]; } // Check for negative single element else { for (i = 0; i < N; i++) if (a[i] < 0) return a[i]; } } // Driver Code int main() { int arr[] = { 3, 5, 2, 8, -7, 6, 9 }; int N = sizeof(arr) / sizeof(arr[0]); cout << find(arr, N); }
Java
// Java program for the above approach import java.util.*; public class GFG { // Function to return the single element static int find(int []a, int N) { // Size can not be smaller than 3 if (N < 3) return 0; // Initialize the variable int i, Cp = 0, Cn = 0; // Check the single element is // positive or negative for (i = 0; i < 3; i++) { if (a[i] > 0) Cp++; else Cn++; } // Check for positive single element if (Cp < Cn) { for (i = 0; i < N; i++) if (a[i] > 0) return a[i]; } // Check for negative single element else { for (i = 0; i < N; i++) if (a[i] < 0) break; } return a[i]; } // Driver Code public static void main(String args[]) { int []arr = { 3, 5, 2, 8, -7, 6, 9 }; int N = arr.length; System.out.println(find(arr, N)); } } // This code is contributed by Samim Hossain Mondal.
Python3
# python program for the above approach # Function to return the single element def find(a, N): # Size can not be smaller than 3 if (N < 3): return 0 # Initialize the variable Cp = 0 Cn = 0 # Check the single element is # positive or negative for i in range(0, 3): if (a[i] > 0): Cp += 1 else: Cn += 1 # Check for positive single element if (Cp < Cn): for i in range(0, N): if (a[i] > 0): return a[i] # Check for negative single element else: for i in range(0, N): if (a[i] < 0): return a[i] # Driver Code if __name__ == "__main__": arr = [3, 5, 2, 8, -7, 6, 9] N = len(arr) print(find(arr, N)) # This code is contributed by rakeshsahni
C#
// C# program for the above approach using System; class GFG { // Function to return the single element static int find(int []a, int N) { // Size can not be smaller than 3 if (N < 3) return 0; // Initialize the variable int i, Cp = 0, Cn = 0; // Check the single element is // positive or negative for (i = 0; i < 3; i++) { if (a[i] > 0) Cp++; else Cn++; } // Check for positive single element if (Cp < Cn) { for (i = 0; i < N; i++) if (a[i] > 0) return a[i]; } // Check for negative single element else { for (i = 0; i < N; i++) if (a[i] < 0) break; } return a[i]; } // Driver Code public static void Main() { int []arr = { 3, 5, 2, 8, -7, 6, 9 }; int N = arr.Length; Console.Write(find(arr, N)); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // Javascript program for the above approach // Function to return the single element function find(a, N) { // Size can not be smaller than 3 if (N < 3) return 0; // Initialize the variable let i, Cp = 0, Cn = 0; // Check the single element is // positive or negative for (i = 0; i < 3; i++) { if (a[i] > 0) Cp++; else Cn++; } // Check for positive single element if (Cp < Cn) { for (i = 0; i < N; i++) if (a[i] > 0) return a[i]; } // Check for negative single element else { for (i = 0; i < N; i++) if (a[i] < 0) return a[i]; } } // Driver Code let arr = [ 3, 5, 2, 8, -7, 6, 9 ]; let N = arr.length; document.write(find(arr, N)); // This code is contributed Samim Hossain Mondal. </script>
-7
Complejidad de Tiempo : O(N) Espacio
Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por akashjha2671 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA