Se da una array de n longitud, y el problema es que tenemos que encontrar la longitud de la subarray desordenada más corta {ni creciente ni decreciente} en una array dada.
Ejemplos:
Input : n = 5 7 9 10 8 11 Output : 3 Explanation : 9 10 8 unordered sub array. Input : n = 5 1 2 3 4 5 Output : 0 Explanation : Array is in increasing order.
La idea se basa en el hecho de que el tamaño del subarreglo más corto sería 0 o 3. Tenemos que verificar que el elemento del arreglo esté aumentando o disminuyendo, si todos los elementos del arreglo están aumentando o disminuyendo, entonces la longitud del subarreglo más corto es 0, Y si el elemento de la array no sigue el aumento o la disminución, entonces su longitud más corta es 3.
Python3
# Python3 program to find shortest # subarray which is unsorted # Bool function for checking an array # elements are in increasing def increasing(a, n): for i in range(0, n - 1): if (a[i] >= a[i + 1]): return False return True # Bool function for checking an array # elements are in decreasing def decreasing(a, n): for i in range(0, n - 1): if (a[i] < a[i + 1]): return False return True def shortestUnsorted(a, n): # increasing and decreasing are two functions. # if function return True value then print # 0 otherwise 3. if (increasing(a, n) == True or decreasing(a, n) == True): return 0 else: return 3 # Driver code ar = [7, 9, 10, 8, 11] n = len(ar) print(shortestUnsorted(ar, n)) # This code is contributed by Smitha Dinesh Semwal.
3
Complejidad temporal : O(n) donde n es la longitud de la array.
Espacio Auxiliar : O(1)
Consulte el artículo completo sobre el subarreglo desordenado más corto para obtener más detalles.
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