Cómo encontrar subrangos no decrecientes y no crecientes en una matriz

Supongo que te refieres a subranges con al menos dos elementos en cada uno, o de lo contrario, la respuesta para no disminuir y no aumentar debería ser 3 y 6, ya que claramente, [1], [2], [3] son ​​ambos secuencias no decrecientes y no crecientes.

last_idx = 0
resultado = []
para i en rango (1, len (matriz) +1):
si i == len (matriz) o matriz [i] <matriz [i-1]:
si i> last_idx + 1:
para j en rango (last_idx, i-1):
para k en el rango (0, ij-1):
resultado + = [(j, j + k + 1)]
last_idx = i

resultado devuelto

Este código de Python debería proporcionarle todos los subranges no decrecientes, y se ejecuta de forma lineal al tamaño de salida (aunque tal vez cuadrático al tamaño de entrada), lo cual es inevitable. Si desea los que no aumentan, cambie .

Si solo necesita los números, el siguiente código le dará en tiempo lineal al tamaño de entrada:

last_idx = 0
resultado = 0
para i en rango (1, len (matriz) +1):
si i == len (matriz) o matriz [i] <matriz [i-1]:
resultado + = (i – last_idx – 1) * (i – last_idx) / 2
last_idx = i

resultado devuelto

(Realmente no los ejecuto, por lo que puede haber errores tipográficos)

More Interesting

Si uso un algoritmo de cifrado no tan bueno que inventé dentro de uno real, ¿cuánto más seguros están juntos?

¿Puede la longitud de un comando Mathematica o Wolfram | Alpha ser una aproximación aproximada de su complejidad de Kolmogorov?

¿Por qué el algoritmo transversal de Morris tiene una complejidad de tiempo O (n)?

¿Qué debo hacer después de aprender Python? ¿Programación competitiva o aprender Djanjo o aprender algoritmos y estructura de datos en Python?

¿Por qué la recursión me causa tantos problemas?

Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?

Cómo comenzar a aprender algoritmos de reconocimiento de voz

¿Cuál es la mejor manera de enseñarme a resolver problemas con algoritmos en Java Script? Ese es mi problema número uno hasta ahora. Soy un principiante, obviamente.

¿Las personas aprenden algoritmos antes de aprender JavaScript?

¿Cómo puedo cambiar el tamaño de una imagen a un ancho y alto específicos sin dejar de mantener su relación de aspecto? Estoy buscando ideas de algoritmos.

¿Cuál es la recurrencia de este problema DP?

Cómo hacer búsquedas difusas eficientes usando la distancia levenshtein

¿Se puede ordenar una lista enlazada circular?

¿Qué recurso contiene el mayor conjunto de algoritmos?

Dada una lista de cadenas, ¿cómo puedo determinar si existe un orden de caracteres para el cual las cadenas están ordenadas en orden lexicográfico?