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
- Se me pide que lea datos de un archivo .txt en una matriz y que haga cosas con esa información (encontrar promedio, encontrar número de elementos, encontrar valores máximos / mínimos). ¿Cómo se puede hacer esto en Java?
- ¿Por qué la complejidad espacial de quicksort es "log n"?
- Si dos cadenas de longitud desigual se generan por el mismo patrón, ¿cómo se relacionan sus complejidades de Kolmogorov?
- ¿Cuál es la diferencia entre las funciones recursivas estáticas y las funciones recursivas no estáticas C / C ++?
- ¿Qué algoritmos se pueden usar para encontrar rutas más seguras en una red de modo que sea casi imposible de rastrear y ningún pirata informático pueda utilizarlo completamente?
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)