Encuentre el único número positivo o único negativo en la array dada

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>
Producción

-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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *