Verifique si los elementos de la array son consecutivos en el tiempo O (n) y el espacio O (1) (maneja números positivos y negativos)

Dada una array desordenada de números distintos , escriba una función que devuelva verdadero si la array consta de números consecutivos. 
Ejemplos: 

Input : arr[] = {5, 4, 2, 1, 3}
Output : Yes

Input : arr[] = {2, 1, 0, -3, -1, -2}
Output : Yes

Hemos discutido tres enfoques diferentes en la publicación a continuación .
Verifique si los elementos de la array son consecutivos 
en la publicación anterior. se discuten tres métodos para este problema con la mejor complejidad de tiempo de O(n) y en O(1) espacio extra pero esa solución no maneja el caso de números negativos. Entonces, en esta publicación, se discutirá un método con una complejidad temporal de O(n) y usando el espacio O(1) que también manejará el caso de negativo. Una suposición importante aquí es que los elementos son distintos.

  1. Encuentre la suma de la array.
  2. Si los elementos de la array dados son consecutivos, eso significa que están en AP. Por lo tanto, encuentre el elemento mínimo, es decir, el primer término de AP y luego calcule ap_sum = n/2 * [2a +(n-1)*d] donde d = 1. Entonces, ap_sum = n/2 * [2a +(n-1) ]
  3. Compara ambas sumas. Escriba Sí si es igual, de lo contrario No.

C++

// C++ program for above implementation
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if elements are consecutive
bool areConsecutives(int arr[], int n)
{
    // Find minimum element in array
    int first_term = *(min_element(arr, arr + n));
 
    // Calculate AP sum
    int ap_sum = (n * (2 * first_term + (n - 1) * 1)) / 2;
 
    // Calculate given array sum
    int arr_sum = 0;
    for (int i = 0; i < n; i++)
        arr_sum += arr[i];
 
    // Compare both sums and return
    return ap_sum == arr_sum;
}
 
// Drivers code
int main()
{
    int arr[] = { 2, 1, 0, -3, -1, -2 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    areConsecutives(arr, n) ? cout << "Yes"
                            : cout << "No";
 
    return 0;
}

Java

// Java program to check if array elements
// are consecutive
import java.io.*;
 
class GFG {
 
    // Function to check if elements are
    // consecutive
    static Boolean areConsecutives(int arr[],
                                      int n)
    {
        // Find minimum element in array
        int first_term = Integer.MAX_VALUE;
        for (int j = 0; j < n; j++)
        {
            if(arr[j] < first_term)
            first_term = arr[j];
        }
 
        // Calculate AP sum
        int ap_sum = (n * (2 * first_term +
                         (n - 1) * 1)) / 2;
 
        // Calculate given array sum
        int arr_sum = 0;
        for (int i = 0; i < n; i++)
            arr_sum += arr[i];
 
        // Compare both sums and return
        return ap_sum == arr_sum;
    }
 
    // Driver code
    public static void main(String[] args)
    {
    int arr[] = { 2, 1, 0, -3, -1, -2 };
    int n = arr.length;
     
    Boolean result = areConsecutives(arr, n);
    if(result == true)
    System.out.println("Yes");
    else
    System.out.println("No");
 
    }
}
// This code is contributed by Prerna Saini

Python 3

# Python 3 program for above
# implementation
import sys
 
# Function to check if elements
# are consecutive
def areConsecutives(arr, n):
 
    # Find minimum element in array
    first_term = sys.maxsize
    for i in range(n):
        if arr[i] < first_term:
            first_term = arr[i]
 
    # Calculate AP sum
    ap_sum = ((n * (2 * first_term +
              (n - 1) * 1)) // 2)
 
    # Calculate given array sum
    arr_sum = 0
    for i in range( n):
        arr_sum += arr[i]
 
    # Compare both sums and return
    return ap_sum == arr_sum
 
# Driver Code
arr = [ 2, 1, 0, -3, -1, -2 ]
n = len(arr)
 
if areConsecutives(arr, n):
    print( "Yes")
else:
    print( "No")
 
# This code is contributed
# by ChitraNayal

C#

// C# program to check if array
// elements are consecutive
using System;
 
class GFG {
 
    // Function to check if elements 
    // are consecutive
    static bool areConsecutives(int []arr,
                                int n)
    {
         
        // Find minimum element in array
        int first_term = int.MaxValue;
         
        for (int j = 0; j < n; j++)
        {
            if(arr[j] < first_term)
            first_term = arr[j];
        }
 
        // Calculate AP sum
        int ap_sum = (n * (2 * first_term +
                     (n - 1) * 1)) / 2;
 
        // Calculate given array sum
        int arr_sum = 0;
        for (int i = 0; i < n; i++)
            arr_sum += arr[i];
 
        // Compare both sums and return
        return ap_sum == arr_sum;
    }
 
    // Driver code
    public static void Main()
    {
        int []arr = {2, 1, 0, -3, -1, -2};
        int n = arr.Length;
         
        bool result = areConsecutives(arr, n);
        if(result == true)
        Console.WriteLine("Yes");
        else
        Console.WriteLine("No");
 
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to check if
// array elements are consecutive
 
// Function to check if elements
// are consecutive
function areConsecutives($arr, $n)
{
     
    // Find minimum element in array
    $first_term = 9999999;
     
    for ($j = 0; $j < $n; $j++)
    {
        if($arr[$j] < $first_term)
            $first_term = $arr[$j];
    }
 
    // Calculate AP sum
    $ap_sum = intval(($n * (2 * $first_term +
                         ($n - 1) * 1)) / 2);
 
    // Calculate given array sum
    $arr_sum = 0;
    for ($i = 0; $i < $n; $i++)
        $arr_sum += $arr[$i];
 
    // Compare both sums and return
    return $ap_sum == $arr_sum;
}
 
// Driver code
$arr = array(2, 1, 0, -3, -1, -2);
$n = count($arr);
 
$result = areConsecutives($arr, $n);
if($result == true)
echo "Yes";
else
echo "No";
 
// This code is contributed by Sam007
?>

Javascript

<script>
 
// Javascript program to check if array elements
// are consecutive
     
    // Function to check if elements are
    // consecutive
    function areConsecutives(arr,n)
    {
        // Find minimum element in array
        let first_term = Number.MAX_VALUE;
        for (let j = 0; j < n; j++)
        {
            if(arr[j] < first_term)
                first_term = arr[j];
        }
  
        // Calculate AP sum
        let ap_sum = (n * (2 * first_term +
                         (n - 1) * 1)) / 2;
  
        // Calculate given array sum
        let arr_sum = 0;
        for (let i = 0; i < n; i++)
            arr_sum += arr[i];
  
        // Compare both sums and return
        return ap_sum == arr_sum;
    }
     
    // Driver code
    let arr=[2, 1, 0, -3, -1, -2 ];
    let n = arr.length;
    let result = areConsecutives(arr, n);
    if(result == true)
        document.write("Yes");
    else
        document.write("No");
     
    //This code is contributed by avanitrachhadiya2155
     
</script>

Producción : 

Yes

Complejidad de tiempo: O(n) 
Espacio auxiliar: O(1)
Este artículo es una contribución de Sahil Chhabra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuir@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *