Compruebe si la array dada es monotónica

Dada una array arr[] que contiene N enteros, la tarea es verificar si la array es monótona o no (monotónica significa que la array está en orden creciente o decreciente).

Ejemplos:

Entrada: arr[] = {1, 2, 2, 3}
Salida:
Explicación: Aquí 1 < 2 <= 2 < 3. 
La array está en orden creciente. Por lo tanto, es monótono.

Entrada: arr[] = {6, 5, 4, 3}
Salida:
Explicación: Aquí 6 > 5 > 4 > 3. 
La array está en orden decreciente. Entonces es monótono.

Entrada: arr[] = {1, 5, 2}
Salida: No
Explicación: Aquí 1 < 5 > 2. La array no aumenta ni disminuye. 
Entonces la array no es monótona.

 

Enfoque: el problema se puede resolver comprobando si la array está en orden creciente o decreciente. Esto se puede hacer fácilmente de la siguiente manera:

  • Si para cada i en el rango [0, N-2], arr[i] ≥ arr[i+1] el arreglo está en orden decreciente.
  • Si para cada i en el rango [0, N-2], arr[i] ≤ arr[i+1] , la array está en orden creciente.

Siga los pasos a continuación para resolver el problema:

  • Atraviese la array arr[] de i = 0 a N-2 y verifique si la array aumenta en orden
  • Atraviese la array arr[] de i = 0 a N-2 y verifique si la array está disminuyendo en orden
  • Si ninguno de los dos anteriores es cierto, entonces la array no es monótona.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check array is monotonic
bool check(vector<int>& arr)
{
    int N = arr.size();
    bool inc = true;
    bool dec = true;
 
    // Loop to check if array is increasing
    for (int i = 0; i < N - 1; i++) {
 
        // To check if
        // array is not increasing
        if (arr[i] > arr[i + 1]) {
            inc = false;
        }
    }
 
    // Loop to check if array is decreasing
    for (int i = 0; i < N - 1; i++) {
 
        // To check if
        // array is not decreasing
        if (arr[i] < arr[i + 1]) {
            dec = false;
        }
    }
 
    // Pick one whether inc or dec
    return inc || dec;
}
 
// Driver code
int main()
{
    vector<int> arr = { 1, 2, 3, 3 };
 
    // Function call
    bool ans = check(arr);
    if (ans)
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

Java

// Java program for above approach
import java.io.*;
 
class GFG {
 
  // Function to check array is monotonic
  static boolean check(int arr[])
  {
    int N = arr.length;
    boolean inc = true;
    boolean dec = true;
 
    // Loop to check if array is increasing
    for (int i = 0; i < N - 1; i++) {
 
      // To check if
      // array is not increasing
      if (arr[i] > arr[i + 1]) {
        inc = false;
      }
    }
 
    // Loop to check if array is decreasing
    for (int i = 0; i < N - 1; i++) {
 
      // To check if
      // array is not decreasing
      if (arr[i] < arr[i + 1]) {
        dec = false;
      }
    }
 
    // Pick one whether inc or dec
    return inc || dec;
  }
 
  // Driver code
  public static void main (String[] args) {
    int arr[] = { 1, 2, 3, 3 };
 
    // Function call
    boolean ans = check(arr);
    if (ans == true)
      System.out.print("Yes");
    else
      System.out.print("No");
  }
}
 
// This code is contributed by hrithikgarg03188.

Python3

# Python program for above approach
 
# Function to check array is monotonic
def check(arr):
    N = len(arr)
    inc = True
    dec = True
     
    # Loop to check if array is increasing
    for i in range(0, N-1):
       
        # To check if array is not increasing
        if arr[i] > arr[i+1]:
            inc = False
 
    # Loop to check if array is decreasing
    for i in range(0, N-1):
       
       # To check if array is not decreasing
        if arr[i] < arr[i+1]:
            dec = False
 
    # Pick one whether inc or dec
    return inc or dec
 
# Driver code
if __name__ == "__main__":
    arr = [1, 2, 3, 3]
 
    # Function call
    ans = check(arr)
    if ans == True:
        print("Yes")
    else:
        print("No")
 
# This code is contributed by Rohit Pradhan

C#

// C# program for above approach
using System;
class GFG {
 
  // Function to check array is monotonic
  static bool check(int[] arr)
  {
    int N = arr.Length;
    bool inc = true;
    bool dec = true;
 
    // Loop to check if array is increasing
    for (int i = 0; i < N - 1; i++) {
 
      // To check if
      // array is not increasing
      if (arr[i] > arr[i + 1]) {
        inc = false;
      }
    }
 
    // Loop to check if array is decreasing
    for (int i = 0; i < N - 1; i++) {
 
      // To check if
      // array is not decreasing
      if (arr[i] < arr[i + 1]) {
        dec = false;
      }
    }
 
    // Pick one whether inc or dec
    return (inc || dec);
  }
 
  // Driver code
  public static void Main()
  {
    int[] arr = { 1, 2, 3, 3 };
 
    // Function call
    bool ans = check(arr);
    if (ans)
      Console.Write("Yes");
    else
      Console.Write("No");
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
    // JavaScript program for above approach
 
    // Function to check array is monotonic
    const check = (arr) => {
        let N = arr.length;
        let inc = true;
        let dec = true;
 
        // Loop to check if array is increasing
        for (let i = 0; i < N - 1; i++) {
 
            // To check if
            // array is not increasing
            if (arr[i] > arr[i + 1]) {
                inc = false;
            }
        }
 
        // Loop to check if array is decreasing
        for (let i = 0; i < N - 1; i++) {
 
            // To check if
            // array is not decreasing
            if (arr[i] < arr[i + 1]) {
                dec = false;
            }
        }
 
        // Pick one whether inc or dec
        return inc || dec;
    }
 
    // Driver code
    let arr = [1, 2, 3, 3];
 
    // Function call
    let ans = check(arr);
    if (ans)
        document.write("Yes");
    else
        document.write("No");
         
// This code is contributed by rakeshsahni
 
</script>
Producción

Yes

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Otro enfoque: (JavaScript) En este enfoque, se usará el método de array de JavaScript, denominado como every() y, por lo tanto, verificaremos aún más con este método si la array pasada es de naturaleza monotónica o no.

Siga los pasos mencionados a continuación:

  • Recorra la array usando el método every() y verifique si el elemento actual es más pequeño que el elemento anterior.
  • De manera similar, nuevamente usando el método every() , así como con el uso del operador lógico OR ( | | ), verifique si el elemento actual es mayor que el elemento anterior o no.
  • Devuelve verdadero si se descubre la secuencia creciente o la secuencia decreciente.

A continuación se muestra la implementación del enfoque anterior:

Javascript

let checkMonotonic = (array) => {
  return (
    // First check for decreasing order sequence...
 
    array.every(
      (element, index) => index === 0 || element <= array[index - 1]
    ) ||
    // Then check for increasing order sequence...
    array.every((element, index) => index === 0 || element >= array[index - 1])
  );
};
 
console.log("Is Monotonic ?: " + checkMonotonic([7, 5, 3, 1]));
console.log("Is Monotonic ?: " + checkMonotonic([4, 0, 3, 1]));
console.log("Is Monotonic ?: " + checkMonotonic([5, 4, 3]));
 
 
// This code is contributed by Aman Singla...

Producción:

Is Monotonic ?: true
Is Monotonic ?: false
Is Monotonic ?: true

Publicación traducida automáticamente

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